%PDF- %PDF-
Direktori : /usr/lib/calibre/calibre/gui2/convert/ |
Current File : //usr/lib/calibre/calibre/gui2/convert/font_key.py |
#!/usr/bin/env python3 __license__ = 'GPL v3' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __docformat__ = 'restructuredtext en' from qt.core import QDialog, QDialogButtonBox from calibre.gui2.convert.font_key_ui import Ui_Dialog from calibre.utils.localization import localize_user_manual_link class FontKeyChooser(QDialog, Ui_Dialog): def __init__(self, parent=None, base_font_size=0.0, font_key=None): QDialog.__init__(self, parent) self.setupUi(self) try: self.wh_label.setText(self.wh_label.text() % localize_user_manual_link( 'https://manual.calibre-ebook.com/conversion.html#font-size-rescaling')) except TypeError: pass # link already localized self.default_font_key = font_key self.default_base_font_size = base_font_size self.buttonBox.clicked.connect(self.button_clicked) self.button_use_default.clicked.connect(self.use_default) for x in ('input_base_font_size', 'input_font_size', 'output_base_font_size'): getattr(self, x).valueChanged.connect(self.calculate) self.font_size_key.textChanged.connect(self.calculate) self.initialize() def initialize(self): self.input_base_font_size.setValue(12.0) self.input_font_size.setValue(12.0) self.input_mapped_font_size.setText('0.0 pt') self.output_base_font_size.setValue(self.default_base_font_size) if self.default_font_key: self.font_size_key.setText(self.default_font_key) else: self.font_size_key.setText('') self.calculate() def button_clicked(self, button): if button is self.buttonBox.button(QDialogButtonBox.StandardButton.RestoreDefaults): self.output_base_font_size.setValue(0.0) self.font_size_key.setText('') self.calculate() def get_profile_values(self): from calibre.ebooks.conversion.config import load_defaults recs = load_defaults('page_setup') pfname = recs.get('output_profile', 'default') from calibre.customize.ui import output_profiles for profile in output_profiles(): if profile.short_name == pfname: break dbase = profile.fbase fsizes = profile.fkey return dbase, fsizes @property def fsizes(self): key = str(self.font_size_key.text()).strip() return [float(x.strip()) for x in key.split(',' if ',' in key else ' ') if x.strip()] @property def dbase(self): return self.output_base_font_size.value() def calculate(self, *args): sbase = self.input_base_font_size.value() dbase = self.dbase fsize = self.input_font_size.value() try: fsizes = self.fsizes except: return if dbase == 0.0 or not fsizes: pd, pfs = self.get_profile_values() if dbase == 0.0: dbase = pd if not fsizes: fsizes = pfs from calibre.ebooks.oeb.transforms.flatcss import KeyMapper mapper = KeyMapper(sbase, dbase, fsizes) msize = mapper[fsize] self.input_mapped_font_size.setText('%.1f pt'%msize) def use_default(self): dbase, fsizes = self.get_profile_values() self.output_base_font_size.setValue(dbase) self.font_size_key.setText(', '.join(['%.1f'%x for x in fsizes])) if __name__ == '__main__': from qt.core import QApplication app = QApplication([]) d = FontKeyChooser() d.exec() del app