Krita Source Code Documentation
Loading...
Searching...
No Matches
KisFontComboBoxes Class Reference

The KisFontComboBoxes class This is a little widget with two comboboxes. One is for the font family, and the other for the style, using the power of QFontDataBase. This allows us to limit the amount of fonts visible in the fonts drop down, as that can be a quite intense number when you have several 'style complete' fonts. More...

#include <kis_font_family_combo_box.h>

+ Inheritance diagram for KisFontComboBoxes:

Signals

void fontChanged (QString)
 

Public Member Functions

QString currentFamily () const
 
QFont currentFont (int pointSize=10) const
 currentFont the current QFont from both family and style combinations
 
QString currentStyle () const
 
 KisFontComboBoxes (QWidget *parent=0)
 
void refillComboBox (QVector< QFontDatabase::WritingSystem > writingSystems=QVector< QFontDatabase::WritingSystem >())
 
void setCurrentFamily (const QString family)
 
void setCurrentFont (QFont font)
 setCurrentFont sets the style and font comboboxes appropriately.
 
void setCurrentStyle (QString style)
 
void setInitialized ()
 

Private Slots

void fontChange ()
 
void fontFamilyChanged ()
 

Private Attributes

QComboBox * m_family
 
QComboBox * m_styles
 

Detailed Description

The KisFontComboBoxes class This is a little widget with two comboboxes. One is for the font family, and the other for the style, using the power of QFontDataBase. This allows us to limit the amount of fonts visible in the fonts drop down, as that can be a quite intense number when you have several 'style complete' fonts.

Definition at line 25 of file kis_font_family_combo_box.h.

Constructor & Destructor Documentation

◆ KisFontComboBoxes()

KisFontComboBoxes::KisFontComboBoxes ( QWidget * parent = 0)

Definition at line 217 of file kis_font_family_combo_box.cpp.

218 : QWidget(parent)
219{
220 QHBoxLayout *layout = new QHBoxLayout(this);
221 layout->setContentsMargins(0, 0, 0, 0);
222
224 m_family->setMinimumWidth(100);
225 m_family->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
226 layout->addWidget(m_family);
227
228 m_styles = new QComboBox();
229 m_styles->setObjectName("stylesComboBox");
230 layout->addWidget(m_styles);
232 m_family->setToolTip(i18n("Font Family"));
233 m_styles->setToolTip(i18n("Font Style"));
234 connect(m_family, SIGNAL(activated(int)), this, SLOT(fontFamilyChanged()));
235 connect(m_family, SIGNAL(activated(int)), this, SLOT(fontChange()));
236 connect(m_styles, SIGNAL(activated(int)), this, SLOT(fontChange()));
237}
The KisFontFamilyComboBox class A QCombobox that limits the amount of fonts it contains....

References fontChange(), fontFamilyChanged(), m_family, and m_styles.

Member Function Documentation

◆ currentFamily()

QString KisFontComboBoxes::currentFamily ( ) const

Definition at line 272 of file kis_font_family_combo_box.cpp.

273{
274 return m_family->currentText();
275}

References m_family.

◆ currentFont()

QFont KisFontComboBoxes::currentFont ( int pointSize = 10) const

currentFont the current QFont from both family and style combinations

Parameters
pointSizeas this widget has no idea about point size, input desired point size.
Returns

Definition at line 282 of file kis_font_family_combo_box.cpp.

283{
284#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
285 return QFontDatabase().font(m_family->currentText(), m_styles->currentText(), pointSize);
286#else
287 return QFontDatabase::font(m_family->currentText(), m_styles->currentText(), pointSize);
288#endif
289}

References m_family, and m_styles.

◆ currentStyle()

QString KisFontComboBoxes::currentStyle ( ) const

Definition at line 277 of file kis_font_family_combo_box.cpp.

278{
279 return m_styles->currentText();
280}

References m_styles.

◆ fontChange

void KisFontComboBoxes::fontChange ( )
privateslot

Definition at line 351 of file kis_font_family_combo_box.cpp.

352{
353 Q_EMIT fontChanged(currentFont(10).toString());
354}
QFont currentFont(int pointSize=10) const
currentFont the current QFont from both family and style combinations
void fontChanged(QString)
QString toString(const QString &value)

References currentFont(), and fontChanged().

◆ fontChanged

void KisFontComboBoxes::fontChanged ( QString )
signal

◆ fontFamilyChanged

void KisFontComboBoxes::fontFamilyChanged ( )
privateslot

Definition at line 297 of file kis_font_family_combo_box.cpp.

298{
299 QString currentText = m_styles->currentText();
300#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
301 QFontDatabase fonts;
302#endif
303 const QString family = m_family->currentText();
304 int maxWidth = 0;
305 m_styles->clear();
306 QStringList styles;
307
308 KisFontFamilyComboBox *cmb = qobject_cast<KisFontFamilyComboBox *>(m_family);
309 cmb->setTopFont(family);
310
311#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
312 if (fonts.styles(family).isEmpty()) {
313#else
314 if (QFontDatabase::styles(family).isEmpty()) {
315#endif
316 styles.append("Normal");
317 }
318
319#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
320 Q_FOREACH (const QString style, fonts.styles(family)) {
321 int b = fonts.weight(family, style);
322#else
323 Q_FOREACH (const QString style, QFontDatabase::styles(family)) {
324 int b = QFontDatabase::weight(family, style);
325#endif
326 int bindex = 0;
327 for (int i = 0; i < styles.size(); i++) {
328#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
329 if (b > fonts.weight(family, styles.at(i))) {
330#else
331 if (b > QFontDatabase::weight(family, styles.at(i))) {
332#endif
333 bindex = i;
334 }
335 }
336 if (!styles.contains(style)) {
337 styles.insert(bindex, style);
338 maxWidth = qMax(m_styles->view()->fontMetrics().horizontalAdvance(style + " "), maxWidth);
339 }
340 }
341 m_styles->addItems(styles);
342 if (m_styles->count() > m_styles->maxVisibleItems()) {
343 maxWidth += m_styles->view()->style()->pixelMetric(QStyle::PixelMetric::PM_ScrollBarExtent);
344 }
345 m_styles->view()->setMinimumWidth(maxWidth);
346 if (styles.contains(currentText)) {
347 m_styles->setCurrentText(currentText);
348 }
349} // KisFontComboBoxes::fontFamilyChanged
void setTopFont(const QString &family)

References m_family, m_styles, and KisFontFamilyComboBox::setTopFont().

◆ refillComboBox()

void KisFontComboBoxes::refillComboBox ( QVector< QFontDatabase::WritingSystem > writingSystems = QVector<QFontDatabase::WritingSystem>())

Definition at line 291 of file kis_font_family_combo_box.cpp.

292{
293 KisFontFamilyComboBox *cmb = qobject_cast<KisFontFamilyComboBox *>(m_family);
294 cmb->refillComboBox(writingSystems);
295}
void refillComboBox(QVector< QFontDatabase::WritingSystem > writingSystems=QVector< QFontDatabase::WritingSystem >())

References m_family, and KisFontFamilyComboBox::refillComboBox().

◆ setCurrentFamily()

void KisFontComboBoxes::setCurrentFamily ( const QString family)

Definition at line 249 of file kis_font_family_combo_box.cpp.

250{
251 m_family->setCurrentText(family);
253}

References fontFamilyChanged(), and m_family.

◆ setCurrentFont()

void KisFontComboBoxes::setCurrentFont ( QFont font)

setCurrentFont sets the style and font comboboxes appropriately.

Parameters
fontthe QFont to set.

Definition at line 239 of file kis_font_family_combo_box.cpp.

240{
241 setCurrentFamily(font.family());
242#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
243 setCurrentStyle(QFontDatabase().styleString(font));
244#else
245 setCurrentStyle(QFontDatabase::styleString(font));
246#endif
247}
void setCurrentFamily(const QString family)
void setCurrentStyle(QString style)

References setCurrentFamily(), and setCurrentStyle().

◆ setCurrentStyle()

void KisFontComboBoxes::setCurrentStyle ( QString style)

Definition at line 255 of file kis_font_family_combo_box.cpp.

256{
257 int index = m_styles->findText(style, Qt::MatchFixedString);
258
259 if (index < 0) {
260 index = m_styles->findText(style, Qt::MatchContains);
261 }
262
263 if (index < 0) {
264 index = m_styles->findText("regular", Qt::MatchContains);
265 }
266
267 if (index >= 0) {
268 m_styles->setCurrentIndex(index);
269 }
270}

References m_styles.

◆ setInitialized()

void KisFontComboBoxes::setInitialized ( )

Definition at line 356 of file kis_font_family_combo_box.cpp.

357{
358 KisFontFamilyComboBox *cmb = qobject_cast<KisFontFamilyComboBox *>(m_family);
359 cmb->setInitialized();
360}

References m_family, and KisFontFamilyComboBox::setInitialized().

Member Data Documentation

◆ m_family

QComboBox* KisFontComboBoxes::m_family
private

Definition at line 62 of file kis_font_family_combo_box.h.

◆ m_styles

QComboBox* KisFontComboBoxes::m_styles
private

Definition at line 63 of file kis_font_family_combo_box.h.


The documentation for this class was generated from the following files: