2 * \file BulletsModule.cpp
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
8 * Full author contact details are available in file CREDITS.
13 #include "BulletsModule.h"
14 #include "GuiApplication.h"
15 #include "qt_helpers.h"
26 BulletsModule::BulletsModule(QWidget * parent)
31 for (int iter = 0; iter < 4; ++iter)
32 bullets_[iter] = ITEMIZE_DEFAULTS[iter];
38 levelLW->addItem("1");
39 levelLW->addItem("2");
40 levelLW->addItem("3");
41 levelLW->addItem("4");
44 setupPanel(new QListWidget(bulletpaneSW), qt_("Standard[[Bullets]]"), "standard");
45 setupPanel(new QListWidget(bulletpaneSW), qt_("Maths"), "amssymb");
46 setupPanel(new QListWidget(bulletpaneSW), qt_("Dings 1"), "psnfss1");
47 setupPanel(new QListWidget(bulletpaneSW), qt_("Dings 2"), "psnfss2");
48 setupPanel(new QListWidget(bulletpaneSW), qt_("Dings 3"), "psnfss3");
49 setupPanel(new QListWidget(bulletpaneSW), qt_("Dings 4"), "psnfss4");
51 connect(levelLW, SIGNAL(currentRowChanged(int)),
52 this, SLOT(showLevel(int)));
53 connect(bulletpaneCO, SIGNAL(activated(int)), bulletpaneSW,
54 SLOT(setCurrentIndex(int)));
58 void BulletsModule::setupPanel(QListWidget * lw, QString const & panelname,
61 connect(lw, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
62 this, SLOT(bulletSelected(QListWidgetItem *, QListWidgetItem*)));
64 // add panelname to combox
65 bulletpaneCO->addItem(panelname);
67 // get pixmap with bullets
68 QPixmap pixmap = getPixmap("images", toqstr(fname), ".png");
70 int const w = pixmap.width() / 6;
71 int const h = pixmap.height() / 6;
73 // apply setting to listwidget
74 lw->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
75 lw->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
76 lw->setViewMode(QListView::IconMode);
77 lw->setFlow(QListView::LeftToRight);
78 lw->setMovement(QListView::Static);
79 lw->setUniformItemSizes(true);
80 lw->setGridSize(QSize(w, h));
81 // the widening by 21 is needed to avoid wrapping
82 lw->resize(6 * w + 21, 6 * h);
83 bulletpaneSW->setMinimumSize(6 * w + 5, 6 * h + 6);
85 // get individual bullets from pixmap
86 for (int row = 0; row < 6; ++row) {
87 for (int col = 0; col < 6; ++col) {
90 QPainter painter(&small);
91 painter.drawPixmap(small.rect(), pixmap, QRect(col * w, row * h, w, h));
92 new QListWidgetItem(QIcon(small), "" , lw, (6 * row + col));
96 // add bulletpanel to stackedwidget
97 bulletpaneSW->addWidget(lw);
101 void BulletsModule::showLevel(int level)
103 // unselect previous item
104 selectItem(current_font_, current_char_, false);
106 current_font_ = bullets_[level].getFont();
108 if (bullets_[level].getFont() < 0) {
109 customCB->setCheckState(Qt::Checked);
110 customLE->setText(toqstr(bullets_[level].getText()));
112 customCB->setCheckState(Qt::Unchecked);
114 current_char_ = bullets_[level].getCharacter();
115 selectItem(current_font_, current_char_, true);
116 bulletpaneCO->setCurrentIndex(current_font_);
117 bulletpaneSW->setCurrentIndex(current_font_);
119 bulletsizeCO->setCurrentIndex(bullets_[level].getSize() + 1);
123 void BulletsModule::init()
125 levelLW->setCurrentRow(0);
130 void BulletsModule::bulletSelected(QListWidgetItem * item, QListWidgetItem *)
132 // unselect previous item
133 selectItem(current_font_, current_char_, false);
135 int const level = levelLW->currentRow();
136 bullets_[level].setCharacter(item->type());
137 bullets_[level].setFont(bulletpaneCO->currentIndex());
138 current_font_ = bulletpaneCO->currentIndex();
139 current_char_ = item->type();
144 void BulletsModule::on_customCB_clicked(bool custom)
147 if (current_font_ < 0)
148 current_font_ = bulletpaneCO->currentIndex();
152 // unselect previous item
153 selectItem(current_font_, current_char_, false);
159 void BulletsModule::selectItem(int font, int character, bool select)
164 QListWidget * lw = static_cast<QListWidget *>(bulletpaneSW->widget(font));
165 lw->item(character)->setSelected(select);
169 void BulletsModule::on_customLE_textEdited(const QString & text)
171 if (customCB->checkState() == Qt::Unchecked)
174 bullets_[levelLW->currentRow()].setFont(current_font_);
175 bullets_[levelLW->currentRow()].setText(qstring_to_ucs4(text));
180 void BulletsModule::on_bulletsizeCO_activated(int size)
182 // -1 apparently means default...
183 bullets_[levelLW->currentRow()].setSize(size - 1);
188 void BulletsModule::setBullet(int level, Bullet const & bullet)
190 bullets_[level] = bullet;
194 Bullet const & BulletsModule::bullet(int level) const
196 return bullets_[level];
199 } // namespace frontend
204 #include "moc_BulletsModule.cpp"