def setupUI(self): self.centralwidget = QWidget(self) self.centralwidget.setObjectName("centralwidget") self.horizontalLayout_3 = QHBoxLayout(self.centralwidget) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.splitter_2 = QSplitter(self.centralwidget) self.splitter_2.setOrientation(Qt.Horizontal) self.splitter_2.setObjectName("splitter_2") self.splitter = QSplitter(self.splitter_2) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.splitter.sizePolicy().hasHeightForWidth()) self.splitter.setSizePolicy(sizePolicy) self.splitter.setMinimumSize(QSize(150, 0)) self.splitter.setMaximumSize(QSize(400, 16777215)) self.splitter.setOrientation(Qt.Vertical) self.splitter.setObjectName("splitter") self.widget = QWidget(self.splitter) self.widget.setObjectName("widget") self.verticalLayout = QVBoxLayout(self.widget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.label = QLabel(self.widget) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.lstMapFiles = QListWidget(self.widget) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.lstMapFiles.sizePolicy().hasHeightForWidth()) self.lstMapFiles.setSizePolicy(sizePolicy) self.lstMapFiles.setObjectName("lstMapFiles") self.verticalLayout.addWidget(self.lstMapFiles) self.widget1 = QWidget(self.splitter) self.widget1.setObjectName("widget1") self.verticalLayout_2 = QVBoxLayout(self.widget1) self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.label_2 = QLabel(self.widget1) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth()) self.label_2.setSizePolicy(sizePolicy) self.label_2.setObjectName("label_2") self.verticalLayout_2.addWidget(self.label_2) self.lstFont = QListWidget(self.widget1) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.lstFont.sizePolicy().hasHeightForWidth()) self.lstFont.setSizePolicy(sizePolicy) self.lstFont.setObjectName("lstFont") self.verticalLayout_2.addWidget(self.lstFont) self.widget2 = QWidget(self.splitter_2) self.widget2.setObjectName("widget2") self.verticalLayout_6 = QVBoxLayout(self.widget2) self.verticalLayout_6.setContentsMargins(0, 0, 0, 0) self.verticalLayout_6.setObjectName("verticalLayout_6") self.horizontalLayout = QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.label_3 = QLabel(self.widget2) self.label_3.setObjectName("label_3") self.horizontalLayout.addWidget(self.label_3) self.lineEdit = QLineEdit(self.widget2) self.lineEdit.setObjectName("lineEdit") self.horizontalLayout.addWidget(self.lineEdit) self.btnGenerate = QPushButton(self.widget2) self.btnGenerate.setObjectName("btnGenerate") self.horizontalLayout.addWidget(self.btnGenerate) self.verticalLayout_6.addLayout(self.horizontalLayout) self.tabWidget = QTabWidget(self.widget2) self.tabWidget.setObjectName("tabWidget") self.tab = QWidget() self.tab.setObjectName("tab") self.verticalLayout_3 = QVBoxLayout(self.tab) self.verticalLayout_3.setObjectName("verticalLayout_3") self.tswSerif = QTypescriptWidget(self.tab) self.tswSerif.setObjectName("tswSerif") self.verticalLayout_3.addWidget(self.tswSerif) self.tabWidget.addTab(self.tab, "") self.tab_2 = QWidget() self.tab_2.setObjectName("tab_2") self.verticalLayout_4 = QVBoxLayout(self.tab_2) self.verticalLayout_4.setObjectName("verticalLayout_4") self.tswSans = QTypescriptWidget(self.tab_2) self.tswSans.setObjectName("tswSans") self.verticalLayout_4.addWidget(self.tswSans) self.tabWidget.addTab(self.tab_2, "") self.tab_3 = QWidget() self.tab_3.setObjectName("tab_3") self.horizontalLayout_2 = QHBoxLayout(self.tab_3) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.tswMono = QTypescriptWidget(self.tab_3) self.tswMono.setObjectName("tswMono") self.horizontalLayout_2.addWidget(self.tswMono) self.tabWidget.addTab(self.tab_3, "") self.tab_4 = QWidget() self.tab_4.setObjectName("tab_4") self.verticalLayout_5 = QVBoxLayout(self.tab_4) self.verticalLayout_5.setObjectName("verticalLayout_5") self.txtTexResult = QTextEdit(self.tab_4) self.txtTexResult.setObjectName("txtTexResult") self.verticalLayout_5.addWidget(self.txtTexResult) self.tabWidget.addTab(self.tab_4, "") self.verticalLayout_6.addWidget(self.tabWidget) self.horizontalLayout_3.addWidget(self.splitter_2) self.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(self) self.menubar.setGeometry(QRect(0, 0, 800, 21)) self.menubar.setObjectName("menubar") self.menu_File = QMenu(self.menubar) self.menu_File.setObjectName("menu_File") self.setMenuBar(self.menubar) self.statusbar = QStatusBar(self) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) self.action_Load_Map_File = QAction(self) self.action_Load_Map_File.setObjectName("action_Load_Map_File") self.actionE_xit = QAction(self) self.actionE_xit.setObjectName("actionE_xit") self.menu_File.addAction(self.action_Load_Map_File) self.menu_File.addSeparator() self.menu_File.addAction(self.actionE_xit) self.menubar.addAction(self.menu_File.menuAction()) self.tabWidget.setCurrentIndex(0) pass
class QTSMainWindow(QMainWindow): def __init__(self): super(QTSMainWindow, self).__init__() self.setupUI() self.retranslateUi() self.connect_signals_slot() self.map_files = {} self.current_map_fonts = {} def setupUI(self): self.centralwidget = QWidget(self) self.centralwidget.setObjectName("centralwidget") self.horizontalLayout_3 = QHBoxLayout(self.centralwidget) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.splitter_2 = QSplitter(self.centralwidget) self.splitter_2.setOrientation(Qt.Horizontal) self.splitter_2.setObjectName("splitter_2") self.splitter = QSplitter(self.splitter_2) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.splitter.sizePolicy().hasHeightForWidth()) self.splitter.setSizePolicy(sizePolicy) self.splitter.setMinimumSize(QSize(150, 0)) self.splitter.setMaximumSize(QSize(400, 16777215)) self.splitter.setOrientation(Qt.Vertical) self.splitter.setObjectName("splitter") self.widget = QWidget(self.splitter) self.widget.setObjectName("widget") self.verticalLayout = QVBoxLayout(self.widget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.label = QLabel(self.widget) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.lstMapFiles = QListWidget(self.widget) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.lstMapFiles.sizePolicy().hasHeightForWidth()) self.lstMapFiles.setSizePolicy(sizePolicy) self.lstMapFiles.setObjectName("lstMapFiles") self.verticalLayout.addWidget(self.lstMapFiles) self.widget1 = QWidget(self.splitter) self.widget1.setObjectName("widget1") self.verticalLayout_2 = QVBoxLayout(self.widget1) self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.label_2 = QLabel(self.widget1) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth()) self.label_2.setSizePolicy(sizePolicy) self.label_2.setObjectName("label_2") self.verticalLayout_2.addWidget(self.label_2) self.lstFont = QListWidget(self.widget1) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.lstFont.sizePolicy().hasHeightForWidth()) self.lstFont.setSizePolicy(sizePolicy) self.lstFont.setObjectName("lstFont") self.verticalLayout_2.addWidget(self.lstFont) self.widget2 = QWidget(self.splitter_2) self.widget2.setObjectName("widget2") self.verticalLayout_6 = QVBoxLayout(self.widget2) self.verticalLayout_6.setContentsMargins(0, 0, 0, 0) self.verticalLayout_6.setObjectName("verticalLayout_6") self.horizontalLayout = QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.label_3 = QLabel(self.widget2) self.label_3.setObjectName("label_3") self.horizontalLayout.addWidget(self.label_3) self.lineEdit = QLineEdit(self.widget2) self.lineEdit.setObjectName("lineEdit") self.horizontalLayout.addWidget(self.lineEdit) self.btnGenerate = QPushButton(self.widget2) self.btnGenerate.setObjectName("btnGenerate") self.horizontalLayout.addWidget(self.btnGenerate) self.verticalLayout_6.addLayout(self.horizontalLayout) self.tabWidget = QTabWidget(self.widget2) self.tabWidget.setObjectName("tabWidget") self.tab = QWidget() self.tab.setObjectName("tab") self.verticalLayout_3 = QVBoxLayout(self.tab) self.verticalLayout_3.setObjectName("verticalLayout_3") self.tswSerif = QTypescriptWidget(self.tab) self.tswSerif.setObjectName("tswSerif") self.verticalLayout_3.addWidget(self.tswSerif) self.tabWidget.addTab(self.tab, "") self.tab_2 = QWidget() self.tab_2.setObjectName("tab_2") self.verticalLayout_4 = QVBoxLayout(self.tab_2) self.verticalLayout_4.setObjectName("verticalLayout_4") self.tswSans = QTypescriptWidget(self.tab_2) self.tswSans.setObjectName("tswSans") self.verticalLayout_4.addWidget(self.tswSans) self.tabWidget.addTab(self.tab_2, "") self.tab_3 = QWidget() self.tab_3.setObjectName("tab_3") self.horizontalLayout_2 = QHBoxLayout(self.tab_3) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.tswMono = QTypescriptWidget(self.tab_3) self.tswMono.setObjectName("tswMono") self.horizontalLayout_2.addWidget(self.tswMono) self.tabWidget.addTab(self.tab_3, "") self.tab_4 = QWidget() self.tab_4.setObjectName("tab_4") self.verticalLayout_5 = QVBoxLayout(self.tab_4) self.verticalLayout_5.setObjectName("verticalLayout_5") self.txtTexResult = QTextEdit(self.tab_4) self.txtTexResult.setObjectName("txtTexResult") self.verticalLayout_5.addWidget(self.txtTexResult) self.tabWidget.addTab(self.tab_4, "") self.verticalLayout_6.addWidget(self.tabWidget) self.horizontalLayout_3.addWidget(self.splitter_2) self.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(self) self.menubar.setGeometry(QRect(0, 0, 800, 21)) self.menubar.setObjectName("menubar") self.menu_File = QMenu(self.menubar) self.menu_File.setObjectName("menu_File") self.setMenuBar(self.menubar) self.statusbar = QStatusBar(self) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) self.action_Load_Map_File = QAction(self) self.action_Load_Map_File.setObjectName("action_Load_Map_File") self.actionE_xit = QAction(self) self.actionE_xit.setObjectName("actionE_xit") self.menu_File.addAction(self.action_Load_Map_File) self.menu_File.addSeparator() self.menu_File.addAction(self.actionE_xit) self.menubar.addAction(self.menu_File.menuAction()) self.tabWidget.setCurrentIndex(0) pass def retranslateUi(self): self.setWindowTitle(QApplication.translate("TypescriptMainWindow", "MainWindow", None, QApplication.UnicodeUTF8)) self.label.setText(QApplication.translate("TypescriptMainWindow", "Map Files", None, QApplication.UnicodeUTF8)) self.label_2.setText(QApplication.translate("TypescriptMainWindow", "Fonts", None, QApplication.UnicodeUTF8)) self.label_3.setText(QApplication.translate("TypescriptMainWindow", "TextLabel", None, QApplication.UnicodeUTF8)) self.btnGenerate.setText(QApplication.translate("TypescriptMainWindow", "Generate Typescript", None, QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QApplication.translate("TypescriptMainWindow", "Serif", None, QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QApplication.translate("TypescriptMainWindow", "Sans", None, QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), QApplication.translate("TypescriptMainWindow", "Mono", None, QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), QApplication.translate("TypescriptMainWindow", "TeX Result", None, QApplication.UnicodeUTF8)) self.menu_File.setTitle(QApplication.translate("TypescriptMainWindow", "&File", None, QApplication.UnicodeUTF8)) self.action_Load_Map_File.setText(QApplication.translate("TypescriptMainWindow", "&Load Map File", None, QApplication.UnicodeUTF8)) self.actionE_xit.setText(QApplication.translate("TypescriptMainWindow", "E&xit", None, QApplication.UnicodeUTF8)) def connect_signals_slot(self): self.action_Load_Map_File.triggered.connect(self.on_action_load_map_file) self.actionE_xit.triggered.connect(self.on_exit) self.lstMapFiles.currentItemChanged.connect(self.on_lst_map_files_current_item_changed) self.lstFont.currentItemChanged.connect(self.on_lst_font_current_item_changed) self.tswSans.buttonPressed.connect(self.on_typescripteditor_pressed) self.tswSerif.buttonPressed.connect(self.on_typescripteditor_pressed) self.tswMono.buttonPressed.connect(self.on_typescripteditor_pressed) self.btnGenerate.clicked.connect(self.on_generate_typescript) pass def on_generate_typescript(self): txt = "" for h in range(0, self.lstMapFiles.count()): i = self.lstMapFiles.item(h) txt += "\\loadmapfile[%s]\n" % (i.text()) txt += "\n\n" ts = TSFramework.Structures.Typescript() ts.typescript_name = self.lineEdit.text() if (ts.typescript_name == "" ): ts.typescript_name = "ff-pytype" ts.mono = self.tswMono.typescript() ts.serif = self.tswSerif.typescript() ts.sans = self.tswSans.typescript() txt += "\n\n"+ts.typescript()+"\n\n" + "\\usetypescript[%s]\n\\setupbodyfont[%s,rm,10pt]\n\n" % (ts.typescript_name,ts.typescript_name) txt += TEX_TEMPLATE txt += "\n\\SpecimenFamily{%s}{rm}{%s}\n" % (ts.typescript_name,self.tswSerif.typescript().symbolic_name) txt += "\n\\SpecimenFamily{%s}{ss}{%s}\n" % (ts.typescript_name,self.tswSans.typescript().symbolic_name) txt += "\n\\SpecimenFamily{%s}{tt}{%s}\n" % (ts.typescript_name,self.tswMono.typescript().symbolic_name) txt += "\n\\DemoBlockFamily{rm}\n" txt += "\n\\DemoBlockFamily{ss}\n" txt += "\n\\DemoBlockFamily{tt}\n" txt += "\n\\stoptext\n" self.txtTexResult.setPlainText(txt) pass def on_typescripteditor_pressed(self,tswWidget,tswFontItem, tswEdit): current_item = self.lstFont.currentItem() print tswFontItem if (current_item is not None): txt = self.lstFont.currentItem().text() map_line = self.current_map_fonts[txt] if tswFontItem == "TF": tswWidget.TF = map_line elif tswFontItem == "BF": tswWidget.BF = map_line elif tswFontItem == "BI": tswWidget.BI = map_line elif tswFontItem == "BS": tswWidget.BS = map_line elif tswFontItem == "IT": tswWidget.IT = map_line elif tswFontItem == "SC": tswWidget.SC = map_line elif tswFontItem == "SL": tswWidget.SL = map_line tswFontItem = map_line tswEdit.setText(map_line.virtual_font_file) pass def on_lst_font_current_item_changed(self,current,previous): print "current font item changed", current.text() pass def on_lst_map_files_current_item_changed(self,current,previous): print "current map item changed" txt_file = current.text() map_lines = self.map_files[txt_file].map_lines self.current_map_fonts.clear() for map_line in map_lines: self.current_map_fonts[map_line.symbolic_name] = map_line self.lstFont.clear() my_keys = self.current_map_fonts.keys() my_keys.sort() for f in my_keys: self.lstFont.addItem(str(f)) pass def on_action_load_map_file(self): print "load map file" try: (filename, mask) = QFileDialog.getOpenFileName(self, "Load Map File", "C:\\tex\\share\\texmf-local\\fonts\\map\\pdftex\\context", "TeX font map files (*.map)") if filename is not None or filename != "": print "Load map from ", filename map_file = TSFramework.Structures.TTFMapFile(filename) print map_file if not map_file.map_file in self.map_files: self.map_files[map_file.map_file] = map_file self.lstMapFiles.addItem(map_file.map_file) self.lstFont.clear() except Exception as exc: print "an error has occurred: ", exc pass def on_exit(self): print "exit" exit() pass