2 * \file BulletsModule.C
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 "qt_helpers.h"
16 #include "support/filetools.h"
21 #include <boost/assert.hpp>
25 using lyx::support::libFileSearch;
29 BulletsModule::BulletsModule(QWidget * , char const * , Qt::WFlags)
33 for (int iter = 0; iter < 4; ++iter) {
34 bullets_[iter] = ITEMIZE_DEFAULTS[iter];
40 levelLW->addItem("1");
41 levelLW->addItem("2");
42 levelLW->addItem("3");
43 levelLW->addItem("4");
46 setupPanel(new QListWidget(bulletpaneSW), qt_("Standard"), "standard");
47 setupPanel(new QListWidget(bulletpaneSW), qt_("Maths"), "amssymb");
48 setupPanel(new QListWidget(bulletpaneSW), qt_("Dings 1"), "psnfss1");
49 setupPanel(new QListWidget(bulletpaneSW), qt_("Dings 2"), "psnfss2");
50 setupPanel(new QListWidget(bulletpaneSW), qt_("Dings 3"), "psnfss3");
51 setupPanel(new QListWidget(bulletpaneSW), qt_("Dings 4"), "psnfss4");
53 Q_CONNECT_1(QListWidget, levelLW, currentRowChanged, int,
54 BulletsModule, this, showLevel,int);
56 Q_CONNECT_1(QComboBox, bulletpaneCO, activated, int,
57 QStackedWidget, bulletpaneSW, setCurrentIndex, int);
61 BulletsModule::~BulletsModule()
66 void BulletsModule::setupPanel(QListWidget * lw, QString panelname, std::string fname)
68 Q_CONNECT_2(QListWidget, lw, currentItemChanged, QListWidgetItem*, QListWidgetItem*,
69 BulletsModule, this, bulletSelected, QListWidgetItem*, QListWidgetItem*);
71 // add panelname to combox
72 bulletpaneCO->addItem(panelname);
74 // get pixmap with bullets
75 QPixmap pixmap = QPixmap(toqstr(libFileSearch("images", fname, "xpm").absFilename()));
76 int const w = pixmap.width() / 6;
77 int const h = pixmap.height() / 6;
79 // apply setting to listwidget
80 lw->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
81 lw->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
82 lw->setViewMode(QListView::IconMode);
83 lw->setFlow(QListView::LeftToRight);
84 lw->setMovement(QListView::Static);
85 lw->setUniformItemSizes(true);
86 lw->setGridSize( QSize(w , h) );
87 lw->resize( 6 * w + 6 , 6 * h);
88 bulletpaneSW->setMinimumSize( 6 * w + 6 , 6 * h);
90 // get individual bullets from pixmap
91 for (int row = 0; row < 6; ++row) {
92 for (int col = 0; col < 6; ++col) {
95 QPainter painter(&small);
96 painter.drawPixmap(small.rect(), pixmap, QRect(col * w, row * h, w, h));
97 new QListWidgetItem(QIcon(small), "" , lw, (6 * row + col));
101 // add bulletpanel to stackedwidget
102 bulletpaneSW->addWidget(lw);
106 void BulletsModule::showLevel(int level)
108 // unselect previous item
109 selectItem(current_font_, current_char_, false);
111 current_font_ = bullets_[level].getFont();
113 if (bullets_[level].getFont() < 0) {
114 customCB->setCheckState(Qt::Checked);
115 customLE->setText(toqstr(bullets_[level].getText()));
117 customCB->setCheckState(Qt::Unchecked);
119 current_char_ = bullets_[level].getCharacter();
120 selectItem(current_font_, current_char_, true);
121 bulletpaneCO->setCurrentIndex(current_font_);
122 bulletpaneSW->setCurrentIndex(current_font_);
124 bulletsizeCO->setCurrentIndex(bullets_[level].getSize() + 1);
128 void BulletsModule::init()
130 levelLW->setCurrentRow(0);
135 void BulletsModule::bulletSelected(QListWidgetItem * item, QListWidgetItem *)
137 // unselect previous item
138 selectItem(current_font_, current_char_, false);
140 int const level = levelLW->currentRow();
141 bullets_[level].setCharacter(item->type());
142 bullets_[level].setFont(bulletpaneCO->currentIndex());
143 current_font_ = bulletpaneCO->currentIndex();
144 current_char_ = item->type();
149 void BulletsModule::on_customCB_toggled(bool custom)
152 if (current_font_ < 0)
153 current_font_ = bulletpaneCO->currentIndex();
157 // unselect previous item
158 selectItem(current_font_, current_char_, false);
164 void BulletsModule::selectItem(int font, int character, bool select)
169 QListWidget * lw = static_cast<QListWidget *>(bulletpaneSW->widget(font));
170 lw->setItemSelected(lw->item(character), select);
174 void BulletsModule::on_customLE_textEdited(const QString & text)
176 if (customCB->checkState() == Qt::Unchecked)
179 bullets_[levelLW->currentRow()].setFont(current_font_);
180 bullets_[levelLW->currentRow()].setText(qstring_to_ucs4(text));
185 void BulletsModule::on_bulletsizeCO_activated(int size)
187 // -1 apparently means default...
188 bullets_[levelLW->currentRow()].setSize(size - 1);
192 void BulletsModule::setBullet(int level, Bullet const & bullet)
194 bullets_[level] = bullet;
198 Bullet const & BulletsModule::getBullet(int level) const
200 return bullets_[level];
207 #include "BulletsModule_moc.cpp"