diff --git a/src/frontends/qt4/GuiSymbols.cpp b/src/frontends/qt4/GuiSymbols.cpp index 96f8f1f9c8..c1a911616d 100644 --- a/src/frontends/qt4/GuiSymbols.cpp +++ b/src/frontends/qt4/GuiSymbols.cpp @@ -12,23 +12,19 @@ #include "GuiSymbols.h" -#include "Buffer.h" -#include "BufferView.h" - #include "GuiApplication.h" #include "GuiView.h" - #include "qt_helpers.h" +#include "Buffer.h" +#include "BufferView.h" #include "Encoding.h" + #include "support/gettext.h" #include #include -// Set to zero if unicode symbols are preferred. -#define USE_PIXMAP 1 - using namespace std; namespace lyx { @@ -161,18 +157,28 @@ GuiSymbols::GuiSymbols(GuiView & lv) int size = font.pointSize() + 3; font.setPointSize(size); symbolsLW->setFont(font); - - okPB->setEnabled(!chosenLE->text().isEmpty() && - !bufferview()->buffer().isReadonly()); - applyPB->setEnabled(!chosenLE->text().isEmpty() && - !bufferview()->buffer().isReadonly()); } void GuiSymbols::updateView() { chosenLE->clear(); - initialiseParams(bufferview()->cursor().getEncoding()->name()); + + string const & new_encoding = bufferview()->cursor().getEncoding()->name(); + if (new_encoding == encoding_) + // everything up to date + return; + if (!new_encoding.empty()) + encoding_ = new_encoding; + updateSymbolList(); +} + + +void GuiSymbols::enableView(bool enable) +{ + chosenLE->setEnabled(enable); + okPB->setEnabled(enable); + applyPB->setEnabled(enable); } @@ -203,8 +209,9 @@ void GuiSymbols::on_symbolsLW_itemActivated(QListWidgetItem *) void GuiSymbols::on_chosenLE_textChanged(QString const & text) { - okPB->setEnabled(!text.isEmpty() && !bufferview()->buffer().isReadonly()); - applyPB->setEnabled(!text.isEmpty() && !bufferview()->buffer().isReadonly()); + bool const empty_sel = text.isEmpty(); + okPB->setEnabled(!empty_sel); + applyPB->setEnabled(!empty_sel); } @@ -245,11 +252,12 @@ void GuiSymbols::updateSymbolList() SymbolsList::const_iterator const end = symbols.end(); for (SymbolsList::const_iterator it = symbols.begin(); it != end; ++it) { char_type c = *it; + QChar::Category cat = QChar::category((uint) c); // we do not want control or space characters - if (QChar(c).category() == QChar::Other_Control || - QChar(c).category() == QChar::Separator_Space) + if (cat == QChar::Other_Control || cat == QChar::Separator_Space) continue; - QListWidgetItem * lwi = new QListWidgetItem(QChar(c)); + QListWidgetItem * lwi = new QListWidgetItem( + QString::fromUcs4((uint const *) &c, 1)); lwi->setTextAlignment(Qt::AlignCenter); symbolsLW->addItem(lwi); QString block = getBlock(c); @@ -275,19 +283,6 @@ QString const GuiSymbols::getBlock(char_type c) const } - -bool GuiSymbols::initialiseParams(string const & data) -{ - if (data == encoding_) - // everything up to date - return true; - if (!data.empty()) - encoding_ = data; - updateSymbolList(); - return true; -} - - void GuiSymbols::dispatchParams() { dispatch(FuncRequest(LFUN_SELF_INSERT, fromqstr(chosenLE->text()))); diff --git a/src/frontends/qt4/GuiSymbols.h b/src/frontends/qt4/GuiSymbols.h index 33eff14fa0..9dce0e2920 100644 --- a/src/frontends/qt4/GuiSymbols.h +++ b/src/frontends/qt4/GuiSymbols.h @@ -14,10 +14,8 @@ #include "DialogView.h" #include "ui_SymbolsUi.h" -#include "Encoding.h" class QListWidgetItem; -class Encoding; namespace lyx { namespace frontend { @@ -33,8 +31,7 @@ public: //@{ void updateView(); void dispatchParams(); - bool initialiseParams(std::string const & data); - void clearParams() {} + void enableView(bool enable); bool isBufferDependent() const { return true; } //@}