shuffle stuff around; minor coding style issues

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20289 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
André Pönitz 2007-09-15 15:42:22 +00:00
parent f53592dd60
commit 6c26624d39
9 changed files with 195 additions and 213 deletions

View File

@ -38,7 +38,7 @@
#endif #endif
#ifdef USE_NATIVE_FILEDIALOG #ifdef USE_NATIVE_FILEDIALOG
#include <qapplication.h> #include <QApplication>
#include "support/filetools.h" #include "support/filetools.h"
using lyx::support::makeAbsPath; using lyx::support::makeAbsPath;

View File

@ -235,6 +235,15 @@ void GuiFontLoader::update()
///////////////////////////////////////////////// /////////////////////////////////////////////////
static QString makeFontName(string const & family, string const & foundry)
{
QString res = toqstr(family);
if (!foundry.empty())
res += " [" + toqstr(foundry) + ']';
return res;
}
QLFontInfo::QLFontInfo(Font const & f) QLFontInfo::QLFontInfo(Font const & f)
{ {
font.setKerning(false); font.setKerning(false);
@ -245,8 +254,8 @@ QLFontInfo::QLFontInfo(Font const & f)
} else { } else {
switch (f.family()) { switch (f.family()) {
case Font::ROMAN_FAMILY: { case Font::ROMAN_FAMILY: {
QString family = toqstr(makeFontName(lyxrc.roman_font_name, QString family = makeFontName(lyxrc.roman_font_name,
lyxrc.roman_font_foundry)); lyxrc.roman_font_foundry);
font.setFamily(family); font.setFamily(family);
#ifdef Q_WS_MACX #ifdef Q_WS_MACX
#if QT_VERSION >= 0x040300 #if QT_VERSION >= 0x040300
@ -260,12 +269,12 @@ QLFontInfo::QLFontInfo(Font const & f)
break; break;
} }
case Font::SANS_FAMILY: case Font::SANS_FAMILY:
font.setFamily(toqstr(makeFontName(lyxrc.sans_font_name, font.setFamily(makeFontName(lyxrc.sans_font_name,
lyxrc.sans_font_foundry))); lyxrc.sans_font_foundry));
break; break;
case Font::TYPEWRITER_FAMILY: case Font::TYPEWRITER_FAMILY:
font.setFamily(toqstr(makeFontName(lyxrc.typewriter_font_name, font.setFamily(makeFontName(lyxrc.typewriter_font_name,
lyxrc.typewriter_font_foundry))); lyxrc.typewriter_font_foundry));
break; break;
default: default:
break; break;

View File

@ -41,6 +41,7 @@
#include <algorithm> #include <algorithm>
#include <cmath> #include <cmath>
#include <utility>
using lyx::support::float_equal; using lyx::support::float_equal;
using lyx::support::token; using lyx::support::token;
@ -59,6 +60,34 @@ namespace lyx {
namespace frontend { namespace frontend {
//FIXME setAutoTextCB should really take an argument, as indicated, that
//determines what text is to be written for "auto". But making
//that work involves more extensive revisions than we now want
//to make, since "auto" also appears in updateContents() (see
//GuiGraphics.cpp).
//The right way to do this, I think, would be to define a class
//checkedLengthSet (and a partnering labeledLengthSete) that encapsulated
//the checkbox, line edit, and length combo together, and then made e.g.
//lengthToWidgets, widgetsToLength, etc, all public methods of that class.
//Perhaps even the validator could be exposed through it.
/**
* sets a checkbox-line edit-length combo group, using "text" if the
* checkbox is unchecked and clearing the line edit if it previously
* said "text".
*/
void setAutoTextCB(QCheckBox * checkBox, QLineEdit * lineEdit,
LengthCombo * lengthCombo/*, string text = "auto"*/)
{
if (!checkBox->isChecked())
lengthToWidgets(lineEdit, lengthCombo,
"auto", lengthCombo->currentLengthItem());
else if (lineEdit->text() == "auto")
lengthToWidgets(lineEdit, lengthCombo, string(),
lengthCombo->currentLengthItem());
}
template<class Pair> template<class Pair>
std::vector<typename Pair::first_type> const std::vector<typename Pair::first_type> const
getFirst(std::vector<Pair> const & pr) getFirst(std::vector<Pair> const & pr)

View File

@ -46,6 +46,7 @@
#include <iomanip> #include <iomanip>
#include <sstream> #include <sstream>
#include <algorithm> #include <algorithm>
#include <utility>
using namespace Ui; using namespace Ui;
@ -82,12 +83,25 @@ static size_t findPos_helper(std::vector<A> const & vec, A const & val)
} }
static std::pair<string, string> parseFontName(string const & name)
{
string::size_type const idx = name.find('[');
if (idx == string::npos || idx == 0)
return make_pair(name, string());
return make_pair(name.substr(0, idx - 1),
name.substr(idx + 1, name.size() - idx - 2));
}
static void setComboxFont(QComboBox * cb, string const & family, static void setComboxFont(QComboBox * cb, string const & family,
string const & foundry) string const & foundry)
{ {
string const name = makeFontName(family, foundry); QString fontname = toqstr(family);
if (!foundry.empty())
fontname += " [" + toqstr(foundry) + ']';
for (int i = 0; i < cb->count(); ++i) { for (int i = 0; i < cb->count(); ++i) {
if (fromqstr(cb->itemText(i)) == name) { if (cb->itemText(i) == fontname) {
cb->setCurrentIndex(i); cb->setCurrentIndex(i);
return; return;
} }
@ -96,7 +110,7 @@ static void setComboxFont(QComboBox * cb, string const & family,
// Try matching without foundry name // Try matching without foundry name
// We count in reverse in order to prefer the Xft foundry // We count in reverse in order to prefer the Xft foundry
for (int i = cb->count() - 1; i >= 0; --i) { for (int i = cb->count(); --i >= 0;) {
pair<string, string> tmp = parseFontName(fromqstr(cb->itemText(i))); pair<string, string> tmp = parseFontName(fromqstr(cb->itemText(i)));
if (compare_ascii_no_case(tmp.first, family) == 0) { if (compare_ascii_no_case(tmp.first, family) == 0) {
cb->setCurrentIndex(i); cb->setCurrentIndex(i);
@ -317,7 +331,6 @@ PrefLatex::PrefLatex(GuiPrefsDialog * form, QWidget * parent)
#else #else
pathCB->setVisible(false); pathCB->setVisible(false);
#endif #endif
} }
@ -409,26 +422,16 @@ PrefScreenFonts::PrefScreenFonts(GuiPrefsDialog * form, QWidget * parent)
connect(screenHugerED, SIGNAL(textChanged(const QString&)), connect(screenHugerED, SIGNAL(textChanged(const QString&)),
this, SIGNAL(changed())); this, SIGNAL(changed()));
screenTinyED->setValidator(new QDoubleValidator( screenTinyED->setValidator(new QDoubleValidator(screenTinyED));
screenTinyED)); screenSmallestED->setValidator(new QDoubleValidator(screenSmallestED));
screenSmallestED->setValidator(new QDoubleValidator( screenSmallerED->setValidator(new QDoubleValidator(screenSmallerED));
screenSmallestED)); screenSmallED->setValidator(new QDoubleValidator(screenSmallED));
screenSmallerED->setValidator(new QDoubleValidator( screenNormalED->setValidator(new QDoubleValidator(screenNormalED));
screenSmallerED)); screenLargeED->setValidator(new QDoubleValidator(screenLargeED));
screenSmallED->setValidator(new QDoubleValidator( screenLargerED->setValidator(new QDoubleValidator(screenLargerED));
screenSmallED)); screenLargestED->setValidator(new QDoubleValidator(screenLargestED));
screenNormalED->setValidator(new QDoubleValidator( screenHugeED->setValidator(new QDoubleValidator(screenHugeED));
screenNormalED)); screenHugerED->setValidator(new QDoubleValidator(screenHugerED));
screenLargeED->setValidator(new QDoubleValidator(
screenLargeED));
screenLargerED->setValidator(new QDoubleValidator(
screenLargerED));
screenLargestED->setValidator(new QDoubleValidator(
screenLargestED));
screenHugeED->setValidator(new QDoubleValidator(
screenHugeED));
screenHugerED->setValidator(new QDoubleValidator(
screenHugerED));
} }
@ -575,11 +578,9 @@ PrefColors::PrefColors(GuiPrefsDialog * form, QWidget * parent)
void PrefColors::apply(LyXRC & /*rc*/) const void PrefColors::apply(LyXRC & /*rc*/) const
{ {
for (unsigned int i = 0; i < lcolors_.size(); ++i) { for (unsigned int i = 0; i < lcolors_.size(); ++i)
if (curcolors_[i] != newcolors_[i]) { if (curcolors_[i] != newcolors_[i])
form_->controller().setColor(lcolors_[i], fromqstr(newcolors_[i])); form_->controller().setColor(lcolors_[i], fromqstr(newcolors_[i]));
}
}
} }
@ -600,10 +601,11 @@ void PrefColors::change_color()
int const row = lyxObjectsLW->currentRow(); int const row = lyxObjectsLW->currentRow();
// just to be sure // just to be sure
if (row < 0) return; if (row < 0)
return;
QString const color = newcolors_[row]; QString const color = newcolors_[row];
QColor c(QColorDialog::getColor(QColor(color), qApp->focusWidget())); QColor c = QColorDialog::getColor(QColor(color), qApp->focusWidget());
if (c.isValid() && c.name() != color) { if (c.isValid() && c.name() != color) {
newcolors_[row] = c.name(); newcolors_[row] = c.name();
@ -641,18 +643,18 @@ PrefDisplay::PrefDisplay(QWidget * parent)
void PrefDisplay::apply(LyXRC & rc) const void PrefDisplay::apply(LyXRC & rc) const
{ {
switch (instantPreviewCO->currentIndex()) { switch (instantPreviewCO->currentIndex()) {
case 0: rc.preview = LyXRC::PREVIEW_OFF; break; case 0: rc.preview = LyXRC::PREVIEW_OFF; break;
case 1: rc.preview = LyXRC::PREVIEW_NO_MATH; break; case 1: rc.preview = LyXRC::PREVIEW_NO_MATH; break;
case 2: rc.preview = LyXRC::PREVIEW_ON; break; case 2: rc.preview = LyXRC::PREVIEW_ON; break;
} }
lyx::graphics::DisplayType dtype; lyx::graphics::DisplayType dtype;
switch (displayGraphicsCO->currentIndex()) { switch (displayGraphicsCO->currentIndex()) {
case 3: dtype = lyx::graphics::NoDisplay; break; case 3: dtype = lyx::graphics::NoDisplay; break;
case 2: dtype = lyx::graphics::ColorDisplay; break; case 2: dtype = lyx::graphics::ColorDisplay; break;
case 1: dtype = lyx::graphics::GrayscaleDisplay; break; case 1: dtype = lyx::graphics::GrayscaleDisplay; break;
case 0: dtype = lyx::graphics::MonochromeDisplay; break; case 0: dtype = lyx::graphics::MonochromeDisplay; break;
default: dtype = lyx::graphics::GrayscaleDisplay; default: dtype = lyx::graphics::GrayscaleDisplay;
} }
rc.display_graphics = dtype; rc.display_graphics = dtype;
@ -1000,7 +1002,7 @@ void PrefConverters::updateGui()
if (!current.isEmpty()) { if (!current.isEmpty()) {
QList<QListWidgetItem *> const item = QList<QListWidgetItem *> const item =
convertersLW->findItems(current, Qt::MatchExactly); convertersLW->findItems(current, Qt::MatchExactly);
if (item.size()>0) if (!item.isEmpty())
convertersLW->setCurrentItem(item.at(0)); convertersLW->setCurrentItem(item.at(0));
} }
@ -1063,16 +1065,17 @@ void PrefConverters::updateButtons()
// this is why we can use the same function for both new and modify // this is why we can use the same function for both new and modify
void PrefConverters::update_converter() void PrefConverters::update_converter()
{ {
Format const & from(form_->formats().get(converterFromCO->currentIndex())); Format const & from = form_->formats().get(converterFromCO->currentIndex());
Format const & to(form_->formats().get(converterToCO->currentIndex())); Format const & to = form_->formats().get(converterToCO->currentIndex());
string const flags = fromqstr(converterFlagED->text()); string const flags = fromqstr(converterFlagED->text());
string const command = fromqstr(converterED->text()); string const command = fromqstr(converterED->text());
Converter const * old = form_->converters().getConverter(from.name(), to.name()); Converter const * old =
form_->converters().getConverter(from.name(), to.name());
form_->converters().add(from.name(), to.name(), command, flags); form_->converters().add(from.name(), to.name(), command, flags);
if (!old) {
if (!old)
form_->converters().updateLast(form_->formats()); form_->converters().updateLast(form_->formats());
}
updateGui(); updateGui();
@ -1084,8 +1087,8 @@ void PrefConverters::update_converter()
void PrefConverters::remove_converter() void PrefConverters::remove_converter()
{ {
Format const & from(form_->formats().get(converterFromCO->currentIndex())); Format const & from = form_->formats().get(converterFromCO->currentIndex());
Format const & to(form_->formats().get(converterToCO->currentIndex())); Format const & to = form_->formats().get(converterToCO->currentIndex());
form_->converters().erase(from.name(), to.name()); form_->converters().erase(from.name(), to.name());
updateGui(); updateGui();
@ -1481,34 +1484,37 @@ void PrefFileformats::updateButtons()
} }
// assure that a gui name cannot be chosen twice // assure that a gui name cannot be chosen twice
bool const known_otherwise = gui_name_known && (where != sel); bool const known_otherwise = gui_name_known && where != sel;
bool const known = !(sel < 0); bool const known = sel >= 0;
bool const valid = (!formatED->text().isEmpty() bool const valid = !formatED->text().isEmpty()
&& !guiNameED->text().isEmpty()); && !guiNameED->text().isEmpty();
int const ftype = formatsLW->currentItem()->type(); int const ftype = formatsLW->currentItem()->type();
Format const & f(form_->formats().get(ftype)); Format const & f = form_->formats().get(ftype);
string const old_pretty(f.prettyname()); string const old_pretty = f.prettyname();
string const old_shortcut(f.shortcut()); string const old_shortcut = f.shortcut();
string const old_extension(f.extension()); string const old_extension = f.extension();
string const old_viewer(f.viewer()); string const old_viewer = f.viewer();
string const old_editor(f.editor()); string const old_editor = f.editor();
bool const old_document(f.documentFormat()); bool const old_document = f.documentFormat();
bool const old_vector(f.vectorFormat()); bool const old_vector = f.vectorFormat();
string const new_pretty(fromqstr(gui_name)); string const new_pretty = fromqstr(gui_name);
string const new_shortcut(fromqstr(shortcutED->text())); string const new_shortcut = fromqstr(shortcutED->text());
string const new_extension(fromqstr(extensionED->text())); string const new_extension = fromqstr(extensionED->text());
string const new_viewer(fromqstr(viewerED->text())); string const new_viewer = fromqstr(viewerED->text());
string const new_editor(fromqstr(editorED->text())); string const new_editor = fromqstr(editorED->text());
bool const new_document(documentCB->isChecked()); bool const new_document = documentCB->isChecked();
bool const new_vector(vectorCB->isChecked()); bool const new_vector = vectorCB->isChecked();
bool modified = ((old_pretty != new_pretty) || (old_shortcut != new_shortcut) bool modified = old_pretty != new_pretty
|| (old_extension != new_extension) || (old_viewer != new_viewer) || old_shortcut != new_shortcut
|| old_editor != new_editor || old_document != new_document || old_extension != new_extension
|| old_vector != new_vector); || old_viewer != new_viewer
|| old_editor != new_editor
|| old_document != new_document
|| old_vector != new_vector;
formatModifyPB->setEnabled(valid && known && modified && !known_otherwise); formatModifyPB->setEnabled(valid && known && modified && !known_otherwise);
formatNewPB->setEnabled(valid && !known && !gui_name_known); formatNewPB->setEnabled(valid && !known && !gui_name_known);
@ -1843,12 +1849,11 @@ void PrefUserInterface::update(LyXRC const & rc)
} }
void PrefUserInterface::select_ui() void PrefUserInterface::select_ui()
{ {
docstring const name = docstring const name =
from_utf8(internal_path(fromqstr(uiFileED->text()))); from_utf8(internal_path(fromqstr(uiFileED->text())));
docstring file(form_->controller().browseUI(name)); docstring file = form_->controller().browseUI(name);
if (!file.empty()) if (!file.empty())
uiFileED->setText(toqstr(file)); uiFileED->setText(toqstr(file));
} }
@ -1858,7 +1863,7 @@ void PrefUserInterface::select_bind()
{ {
docstring const name = docstring const name =
from_utf8(internal_path(fromqstr(bindFileED->text()))); from_utf8(internal_path(fromqstr(bindFileED->text())));
docstring file(form_->controller().browsebind(name)); docstring file = form_->controller().browsebind(name);
if (!file.empty()) if (!file.empty())
bindFileED->setText(toqstr(file)); bindFileED->setText(toqstr(file));
} }
@ -1874,7 +1879,7 @@ void PrefUserInterface::on_loadWindowSizeCB_toggled(bool loadwindowsize)
PrefIdentity::PrefIdentity(QWidget * parent) PrefIdentity::PrefIdentity(QWidget * parent)
: PrefModule(_("Identity"), 0, parent) : PrefModule(_("Identity"), 0, parent)
{ {
setupUi(this); setupUi(this);
@ -2012,16 +2017,19 @@ Converters & GuiPrefsDialog::converters()
return controller().converters(); return controller().converters();
} }
Formats & GuiPrefsDialog::formats() Formats & GuiPrefsDialog::formats()
{ {
return controller().formats(); return controller().formats();
} }
Movers & GuiPrefsDialog::movers() Movers & GuiPrefsDialog::movers()
{ {
return controller().movers(); return controller().movers();
} }
void GuiPrefsDialog::applyView() void GuiPrefsDialog::applyView()
{ {
apply(controller().rc()); apply(controller().rc());

View File

@ -36,19 +36,64 @@ using lyx::support::bformat;
namespace lyx { namespace lyx {
namespace { static docstring const formatted(docstring const & text)
class MessageBox: public QMessageBox
{ {
public: const int w = 80;
MessageBox(QWidget * parent = 0) : QMessageBox(parent) docstring sout;
{
setAttribute(Qt::WA_DeleteOnClose, true);
setAttribute(Qt::WA_QuitOnClose, false);
}
};
} // anonymous namespace if (text.empty())
return sout;
docstring::size_type curpos = 0;
docstring line;
for (;;) {
docstring::size_type const nxtpos1 = text.find(' ', curpos);
docstring::size_type const nxtpos2 = text.find('\n', curpos);
docstring::size_type const nxtpos = std::min(nxtpos1, nxtpos2);
docstring const word =
nxtpos == docstring::npos ?
text.substr(curpos) :
text.substr(curpos, nxtpos - curpos);
bool const newline = (nxtpos2 != docstring::npos &&
nxtpos2 < nxtpos1);
docstring const line_plus_word =
line.empty() ? word : line + char_type(' ') + word;
// FIXME: make w be size_t
if (int(line_plus_word.length()) >= w) {
sout += line + char_type('\n');
if (newline) {
sout += word + char_type('\n');
line.erase();
} else {
line = word;
}
} else if (newline) {
sout += line_plus_word + char_type('\n');
line.erase();
} else {
if (!line.empty())
line += char_type(' ');
line += word;
}
if (nxtpos == docstring::npos) {
if (!line.empty())
sout += line;
break;
}
curpos = nxtpos + 1;
}
return sout;
}
int prompt_pimpl(docstring const & tit, docstring const & question, int prompt_pimpl(docstring const & tit, docstring const & question,
@ -57,7 +102,7 @@ int prompt_pimpl(docstring const & tit, docstring const & question,
{ {
docstring const title = bformat(_("LyX: %1$s"), tit); docstring const title = bformat(_("LyX: %1$s"), tit);
MessageBox mb; QMessageBox mb;
// For some reason, sometimes Qt uses an hourglass or watch cursor when // For some reason, sometimes Qt uses an hourglass or watch cursor when
// displaying the alert. Hence, we ask for the standard cursor shape. // displaying the alert. Hence, we ask for the standard cursor shape.
@ -65,7 +110,7 @@ int prompt_pimpl(docstring const & tit, docstring const & question,
qApp->changeOverrideCursor(Qt::ArrowCursor); qApp->changeOverrideCursor(Qt::ArrowCursor);
// FIXME replace that with theApp->gui()->currentView() // FIXME replace that with theApp->gui()->currentView()
int res = mb.information(qApp->focusWidget(), int res = QMessageBox::information(qApp->focusWidget(),
toqstr(title), toqstr(title),
toqstr(formatted(question)), toqstr(formatted(question)),
toqstr(b1), toqstr(b1),
@ -93,8 +138,7 @@ void warning_pimpl(docstring const & tit, docstring const & message)
toqstr(formatted(message))); toqstr(formatted(message)));
return; return;
} }
MessageBox mb; QMessageBox::warning(qApp->focusWidget(),
mb.warning(qApp->focusWidget(),
toqstr(title), toqstr(title),
toqstr(formatted(message))); toqstr(formatted(message)));
} }
@ -112,8 +156,7 @@ void error_pimpl(docstring const & tit, docstring const & message)
toqstr(formatted(message))); toqstr(formatted(message)));
return; return;
} }
MessageBox mb; QMessageBox::critical(qApp->focusWidget(),
mb.critical(qApp->focusWidget(),
toqstr(title), toqstr(title),
toqstr(formatted(message))); toqstr(formatted(message)));
} }
@ -122,8 +165,7 @@ void error_pimpl(docstring const & tit, docstring const & message)
void information_pimpl(docstring const & tit, docstring const & message) void information_pimpl(docstring const & tit, docstring const & message)
{ {
docstring const title = bformat(_("LyX: %1$s"), tit); docstring const title = bformat(_("LyX: %1$s"), tit);
MessageBox mb; QMessageBox::information(qApp->focusWidget(),
mb.information(qApp->focusWidget(),
toqstr(title), toqstr(title),
toqstr(formatted(message))); toqstr(formatted(message)));
} }

View File

@ -12,7 +12,7 @@
#ifndef QLKEY_H #ifndef QLKEY_H
#define QLKEY_H #define QLKEY_H
#include <qnamespace.h> #include <Qt>
#include <string> #include <string>

View File

@ -26,8 +26,7 @@
#include <QComboBox> #include <QComboBox>
#include <QCheckBox> #include <QCheckBox>
#include <QPalette> #include <QPalette>
#include <qlineedit.h> #include <QLineEdit>
#include <qtextcodec.h>
#include <algorithm> #include <algorithm>
@ -37,28 +36,7 @@ namespace lyx {
using support::isStrDbl; using support::isStrDbl;
using std::vector; using std::vector;
using std::make_pair;
using std::string; using std::string;
using std::pair;
using std::endl;
string makeFontName(string const & family, string const & foundry)
{
if (foundry.empty())
return family;
return family + " [" + foundry + ']';
}
pair<string, string> parseFontName(string const & name)
{
string::size_type const idx = name.find('[');
if (idx == string::npos || idx == 0)
return make_pair(name, string());
return make_pair(name.substr(0, idx - 1),
name.substr(idx + 1, name.size() - idx - 2));
}
string widgetsToLength(QLineEdit const * input, LengthCombo const * combo) string widgetsToLength(QLineEdit const * input, LengthCombo const * combo)
@ -96,7 +74,7 @@ Length widgetsToLength(QLineEdit const * input, QComboBox const * combo)
void lengthToWidgets(QLineEdit * input, LengthCombo * combo, void lengthToWidgets(QLineEdit * input, LengthCombo * combo,
Length const & len, Length::UNIT /*defaultUnit*/) Length const & len, Length::UNIT /*defaultUnit*/)
{ {
combo->setCurrentItem(Length(len).unit()); combo->setCurrentItem(len.unit());
input->setText(QString::number(Length(len).value())); input->setText(QString::number(Length(len).value()));
} }
@ -165,63 +143,4 @@ QString const qt_(string const & str)
return toqstr(_(str)); return toqstr(_(str));
} }
docstring const formatted(docstring const & text, int w)
{
docstring sout;
if (text.empty())
return sout;
docstring::size_type curpos = 0;
docstring line;
for (;;) {
docstring::size_type const nxtpos1 = text.find(' ', curpos);
docstring::size_type const nxtpos2 = text.find('\n', curpos);
docstring::size_type const nxtpos = std::min(nxtpos1, nxtpos2);
docstring const word =
nxtpos == docstring::npos ?
text.substr(curpos) :
text.substr(curpos, nxtpos - curpos);
bool const newline = (nxtpos2 != docstring::npos &&
nxtpos2 < nxtpos1);
docstring const line_plus_word =
line.empty() ? word : line + char_type(' ') + word;
// FIXME: make w be size_t
if (int(line_plus_word.length()) >= w) {
sout += line + char_type('\n');
if (newline) {
sout += word + char_type('\n');
line.erase();
} else {
line = word;
}
} else if (newline) {
sout += line_plus_word + char_type('\n');
line.erase();
} else {
if (!line.empty())
line += char_type(' ');
line += word;
}
if (nxtpos == docstring::npos) {
if (!line.empty())
sout += line;
break;
}
curpos = nxtpos + 1;
}
return sout;
}
} // namespace lyx } // namespace lyx

View File

@ -14,25 +14,20 @@
#define QTHELPERS_H #define QTHELPERS_H
#include "Length.h" #include "Length.h"
#include "support/docstring.h"
#include "support/qstring_helpers.h" #include "support/qstring_helpers.h"
#include <QString> #include <string>
#include <utility>
class QComboBox; class QComboBox;
class QLineEdit; class QLineEdit;
class QCheckBox; class QCheckBox;
class QString;
class QWidget; class QWidget;
class LengthCombo; class LengthCombo;
namespace lyx { namespace lyx {
std::string makeFontName(std::string const & family, std::string const & foundry);
std::pair<std::string,std::string> parseFontName(std::string const & name);
/// method to get a Length from widgets (LengthCombo) /// method to get a Length from widgets (LengthCombo)
std::string widgetsToLength(QLineEdit const * input, LengthCombo const * combo); std::string widgetsToLength(QLineEdit const * input, LengthCombo const * combo);
/// method to get a Length from widgets (QComboBox) /// method to get a Length from widgets (QComboBox)
@ -49,30 +44,9 @@ void lengthToWidgets(QLineEdit * input, LengthCombo * combo,
void lengthAutoToWidgets(QLineEdit * input, LengthCombo * combo, void lengthAutoToWidgets(QLineEdit * input, LengthCombo * combo,
Length const & len, Length::UNIT defaultUnit); Length const & len, Length::UNIT defaultUnit);
//FIXME setAutoTextCB should really take an argument, as indicated, that
//determines what text is to be written for "auto". But making
//that work involves more extensive revisions than we now want
//to make, since "auto" also appears in updateContents() (see
//GuiGraphics.cpp).
//The right way to do this, I think, would be to define a class
//checkedLengthSet (and a partnering labeledLengthSete) that encapsulated
//the checkbox, line edit, and length combo together, and then made e.g.
//lengthToWidgets, widgetsToLength, etc, all public methods of that class.
//Perhaps even the validator could be exposed through it.
/**
* sets a checkbox-line edit-length combo group, using "text" if the
* checkbox is unchecked and clearing the line edit if it previously
* said "text".
*/
void setAutoTextCB(QCheckBox * checkBox, QLineEdit * lineEdit,
LengthCombo * lengthCombo/*, string text = "auto"*/);
/// colors a widget red if invalid /// colors a widget red if invalid
void setValid(QWidget * widget, bool valid); void setValid(QWidget * widget, bool valid);
/// format a string to the given width
docstring const formatted(docstring const & text, int w = 80);
/** /**
* qt_ - i18nize string and convert to QString * qt_ - i18nize string and convert to QString

View File

@ -15,8 +15,9 @@
#define SOCKET_CALLBACK_H #define SOCKET_CALLBACK_H
#include <qobject.h> #include <QObject>
#include <qsocketnotifier.h> #include <QSocketNotifier>
#include <boost/scoped_ptr.hpp> #include <boost/scoped_ptr.hpp>
#include <boost/function.hpp> #include <boost/function.hpp>