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 201 of file kis_font_family_combo_box.cpp.

202 : QWidget(parent)
203{
204 QHBoxLayout *layout = new QHBoxLayout(this);
205 layout->setContentsMargins(0, 0, 0, 0);
206
208 m_family->setMinimumWidth(100);
209 m_family->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
210 layout->addWidget(m_family);
211
212 m_styles = new QComboBox();
213 m_styles->setObjectName("stylesComboBox");
214 layout->addWidget(m_styles);
216 m_family->setToolTip(i18n("Font Family"));
217 m_styles->setToolTip(i18n("Font Style"));
218 connect(m_family, SIGNAL(activated(int)), this, SLOT(fontFamilyChanged()));
219 connect(m_family, SIGNAL(activated(int)), this, SLOT(fontChange()));
220 connect(m_styles, SIGNAL(activated(int)), this, SLOT(fontChange()));
221}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
The KisFontFamilyComboBox class A QCombobox that limits the amount of fonts it contains....

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

Member Function Documentation

◆ currentFamily()

QString KisFontComboBoxes::currentFamily ( ) const

Definition at line 252 of file kis_font_family_combo_box.cpp.

253{
254 return m_family->currentText();
255}

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 262 of file kis_font_family_combo_box.cpp.

263{
264 return QFontDatabase().font(m_family->currentText(), m_styles->currentText(), pointSize);
265}

References m_family, and m_styles.

◆ currentStyle()

QString KisFontComboBoxes::currentStyle ( ) const

Definition at line 257 of file kis_font_family_combo_box.cpp.

258{
259 return m_styles->currentText();
260}

References m_styles.

◆ fontChange

void KisFontComboBoxes::fontChange ( )
privateslot

Definition at line 312 of file kis_font_family_combo_box.cpp.

313{
314 Q_EMIT fontChanged(currentFont(10).toString());
315}
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 273 of file kis_font_family_combo_box.cpp.

274{
275 QString currentText = m_styles->currentText();
276 QFontDatabase fonts;
277 const QString family = m_family->currentText();
278 int maxWidth = 0;
279 m_styles->clear();
280 QStringList styles;
281
282 KisFontFamilyComboBox *cmb = qobject_cast<KisFontFamilyComboBox *>(m_family);
283 cmb->setTopFont(family);
284
285 if (fonts.styles(family).isEmpty()) {
286 styles.append("Normal");
287 }
288
289 Q_FOREACH (const QString style, fonts.styles(family)) {
290 int b = fonts.weight(family, style);
291 int bindex = 0;
292 for (int i = 0; i < styles.size(); i++) {
293 if (b > fonts.weight(family, styles.at(i))) {
294 bindex = i;
295 }
296 }
297 if (!styles.contains(style)) {
298 styles.insert(bindex, style);
299 maxWidth = qMax(m_styles->view()->fontMetrics().horizontalAdvance(style + " "), maxWidth);
300 }
301 }
302 m_styles->addItems(styles);
303 if (m_styles->count() > m_styles->maxVisibleItems()) {
304 maxWidth += m_styles->view()->style()->pixelMetric(QStyle::PixelMetric::PM_ScrollBarExtent);
305 }
306 m_styles->view()->setMinimumWidth(maxWidth);
307 if (styles.contains(currentText)) {
308 m_styles->setCurrentText(currentText);
309 }
310} // 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 267 of file kis_font_family_combo_box.cpp.

268{
269 KisFontFamilyComboBox *cmb = qobject_cast<KisFontFamilyComboBox *>(m_family);
270 cmb->refillComboBox(writingSystems);
271}
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 229 of file kis_font_family_combo_box.cpp.

230{
231 m_family->setCurrentText(family);
233}

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 223 of file kis_font_family_combo_box.cpp.

224{
225 setCurrentFamily(font.family());
226 setCurrentStyle(QFontDatabase().styleString(font));
227}
void setCurrentFamily(const QString family)
void setCurrentStyle(QString style)

References setCurrentFamily(), and setCurrentStyle().

◆ setCurrentStyle()

void KisFontComboBoxes::setCurrentStyle ( QString style)

Definition at line 235 of file kis_font_family_combo_box.cpp.

236{
237 int index = m_styles->findText(style, Qt::MatchFixedString);
238
239 if (index < 0) {
240 index = m_styles->findText(style, Qt::MatchContains);
241 }
242
243 if (index < 0) {
244 index = m_styles->findText("regular", Qt::MatchContains);
245 }
246
247 if (index >= 0) {
248 m_styles->setCurrentIndex(index);
249 }
250}

References m_styles.

◆ setInitialized()

void KisFontComboBoxes::setInitialized ( )

Definition at line 317 of file kis_font_family_combo_box.cpp.

318{
319 KisFontFamilyComboBox *cmb = qobject_cast<KisFontFamilyComboBox *>(m_family);
320 cmb->setInitialized();
321}

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: