#include "GuiFontLoader.h"
#include "GuiKeySymbol.h"
#include "qt_helpers.h"
+#include "Validator.h"
#include "Author.h"
#include "BufferList.h"
#include "LyXAction.h"
#include "LyX.h"
#include "PanelStack.h"
-#include "paper.h"
#include "Session.h"
#include "SpellChecker.h"
#include "support/gettext.h"
#include "support/lassert.h"
#include "support/lstrings.h"
+#include "support/Messages.h"
#include "support/os.h"
#include "support/Package.h"
else if(!fallback_dir.isEmpty())
lastPath = fallback_dir;
- FileDialog dlg(title, LFUN_SELECT_FILE_SYNC);
+ FileDialog dlg(title);
dlg.setButton2(label1, dir1);
dlg.setButton2(label2, dir2);
if (!pathname.isEmpty())
lastPath = onlyPath(pathname);
- FileDialog dlg(title, LFUN_SELECT_FILE_SYNC);
+ FileDialog dlg(title);
dlg.setButton1(label1, dir1);
dlg.setButton2(label2, dir2);
QString testname = reloutname;
testname.remove(QRegExp("^(\\.\\./)+"));
-
+
if (testname.contains("/"))
return outname;
else
namespace frontend {
-string const catLookAndFeel = N_("Look & Feel");
-string const catEditing = N_("Editing");
-string const catLanguage = N_("Language Settings");
-string const catOutput = N_("Output");
-string const catFiles = N_("File Handling");
+QString const catLookAndFeel = N_("Look & Feel");
+QString const catEditing = N_("Editing");
+QString const catLanguage = N_("Language Settings");
+QString const catOutput = N_("Output");
+QString const catFiles = N_("File Handling");
static void parseFontName(QString const & mangled0,
string & name, string & foundry)
// for bug 1063.
QFont font;
- font.setKerning(false);
QString const font_family = toqstr(family);
if (font_family == guiApp->romanFontName()) {
/////////////////////////////////////////////////////////////////////
PrefOutput::PrefOutput(GuiPreferences * form)
- : PrefModule(qt_(catOutput), qt_("General"), form)
+ : PrefModule(catOutput, N_("General"), form)
{
setupUi(this);
+
DateED->setValidator(new StrftimeValidator(DateED));
+ dviCB->setValidator(new NoNewLineValidator(dviCB));
+ pdfCB->setValidator(new NoNewLineValidator(pdfCB));
+
connect(DateED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
connect(plaintextLinelengthSB, SIGNAL(valueChanged(int)),
this, SIGNAL(changed()));
connect(pdfCB, SIGNAL(editTextChanged(QString)),
this, SIGNAL(changed()));
+ connect(printerPaperTypeED, SIGNAL(textChanged(QString)),
+ this, SIGNAL(changed()));
+ connect(printerLandscapeED, SIGNAL(textChanged(QString)),
+ this, SIGNAL(changed()));
+ connect(printerPaperSizeED, SIGNAL(textChanged(QString)),
+ this, SIGNAL(changed()));
+
+ printerPaperTypeED->setValidator(new NoNewLineValidator(printerPaperTypeED));
+ printerLandscapeED->setValidator(new NoNewLineValidator(printerLandscapeED));
+ printerPaperSizeED->setValidator(new NoNewLineValidator(printerPaperSizeED));
+
dviCB->addItem("");
dviCB->addItem("xdvi -sourceposition '$$n:\\ $$t' $$o");
dviCB->addItem("yap -1 -s \"$$n $$t\" $$o");
- dviCB->addItem("okular --unique \"file:$$o#src:$$n $$t\"");
+ dviCB->addItem("okular --unique \"$$o#src:$$n $$f\"");
dviCB->addItem("synctex view -i $$n:0:$$t -o $$o -x \"evince -i %{page+1} $$o\"");
pdfCB->addItem("");
pdfCB->addItem("CMCDDE SUMATRA control [ForwardSearch(\\\"$$o\\\",\\\"$$t\\\",$$n,0,0,1)]");
+ pdfCB->addItem("SumatraPDF -reuse-instance $$o -forward-search $$t $$n");
pdfCB->addItem("synctex view -i $$n:0:$$t -o $$o -x \"xpdf -raise -remote $$t.tmp $$o %{page+1}\"");
- pdfCB->addItem("okular --unique \"file:$$o#src:$$n $$t\"");
+ pdfCB->addItem("okular --unique \"$$o#src:$$n $$f\"");
+ pdfCB->addItem("qpdfview --unique \"$$o#src:$$f:$$n:0\"");
pdfCB->addItem("synctex view -i $$n:0:$$t -o $$o -x \"evince -i %{page+1} $$o\"");
pdfCB->addItem("/Applications/Skim.app/Contents/SharedSupport/displayline $$n $$o $$t");
}
}
-void PrefOutput::apply(LyXRC & rc) const
+void PrefOutput::applyRC(LyXRC & rc) const
{
rc.date_insert_format = fromqstr(DateED->text());
rc.plaintext_linelen = plaintextLinelengthSB->value();
rc.export_overwrite = ALL_FILES;
break;
}
+
+ rc.print_paper_flag = fromqstr(printerPaperTypeED->text());
+ rc.print_landscape_flag = fromqstr(printerLandscapeED->text());
+ rc.print_paper_dimension_flag = fromqstr(printerPaperSizeED->text());
}
-void PrefOutput::update(LyXRC const & rc)
+void PrefOutput::updateRC(LyXRC const & rc)
{
DateED->setText(toqstr(rc.date_insert_format));
plaintextLinelengthSB->setValue(rc.plaintext_linelen);
overwriteCO->setCurrentIndex(2);
break;
}
+
+ printerPaperTypeED->setText(toqstr(rc.print_paper_flag));
+ printerLandscapeED->setText(toqstr(rc.print_landscape_flag));
+ printerPaperSizeED->setText(toqstr(rc.print_paper_dimension_flag));
}
/////////////////////////////////////////////////////////////////////
PrefInput::PrefInput(GuiPreferences * form)
- : PrefModule(qt_(catEditing), qt_("Keyboard/Mouse"), form)
+ : PrefModule(catEditing, N_("Keyboard/Mouse"), form)
{
setupUi(this);
this, SIGNAL(changed()));
connect(dontswapCB, SIGNAL(toggled(bool)),
this, SIGNAL(changed()));
+ connect(mmPasteCB, SIGNAL(toggled(bool)),
+ this, SIGNAL(changed()));
// reveal checkbox for switching Ctrl and Meta on Mac:
bool swapcb = false;
-#ifdef Q_WS_MACX
+#ifdef Q_OS_MAC
#if QT_VERSION > 0x040600
swapcb = true;
#endif
}
-void PrefInput::apply(LyXRC & rc) const
+void PrefInput::applyRC(LyXRC & rc) const
{
// FIXME: can derive CB from the two EDs
rc.use_kbmap = keymapCB->isChecked();
rc.scroll_wheel_zoom = LyXRC::SCROLL_WHEEL_ZOOM_OFF;
}
rc.mac_dontswap_ctrl_meta = dontswapCB->isChecked();
+ rc.mouse_middlebutton_paste = mmPasteCB->isChecked();
}
-void PrefInput::update(LyXRC const & rc)
+void PrefInput::updateRC(LyXRC const & rc)
{
// FIXME: can derive CB from the two EDs
keymapCB->setChecked(rc.use_kbmap);
break;
}
dontswapCB->setChecked(rc.mac_dontswap_ctrl_meta);
+ mmPasteCB->setChecked(rc.mouse_middlebutton_paste);
}
{
scrollzoomValueCO->setEnabled(enabled);
}
-
-
+
+
/////////////////////////////////////////////////////////////////////
//
// PrefCompletion
/////////////////////////////////////////////////////////////////////
PrefCompletion::PrefCompletion(GuiPreferences * form)
- : PrefModule(qt_(catEditing), qt_("Input Completion"), form)
+ : PrefModule(catEditing, N_("Input Completion"), form)
{
setupUi(this);
this, SIGNAL(changed()));
connect(cursorTextCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
+ connect(minlengthSB, SIGNAL(valueChanged(int)),
+ this, SIGNAL(changed()));
}
}
-void PrefCompletion::apply(LyXRC & rc) const
+void PrefCompletion::applyRC(LyXRC & rc) const
{
rc.completion_inline_delay = inlineDelaySB->value();
rc.completion_inline_math = inlineMathCB->isChecked();
rc.completion_cursor_text = cursorTextCB->isChecked();
rc.completion_popup_after_complete =
popupAfterCompleteCB->isChecked();
+ rc.completion_minlength = minlengthSB->value();
}
-void PrefCompletion::update(LyXRC const & rc)
+void PrefCompletion::updateRC(LyXRC const & rc)
{
inlineDelaySB->setValue(rc.completion_inline_delay);
inlineMathCB->setChecked(rc.completion_inline_math);
popupTextCB->setChecked(rc.completion_popup_text);
cursorTextCB->setChecked(rc.completion_cursor_text);
popupAfterCompleteCB->setChecked(rc.completion_popup_after_complete);
- enableCB();
+ enableCB();
+ minlengthSB->setValue(rc.completion_minlength);
}
/////////////////////////////////////////////////////////////////////
PrefLatex::PrefLatex(GuiPreferences * form)
- : PrefModule(qt_(catOutput), qt_("LaTeX"), form)
+ : PrefModule(catOutput, N_("LaTeX"), form)
{
setupUi(this);
+
+ latexEncodingED->setValidator(new NoNewLineValidator(latexEncodingED));
+ latexDviPaperED->setValidator(new NoNewLineValidator(latexDviPaperED));
+ latexBibtexED->setValidator(new NoNewLineValidator(latexBibtexED));
+ latexJBibtexED->setValidator(new NoNewLineValidator(latexJBibtexED));
+ latexIndexED->setValidator(new NoNewLineValidator(latexIndexED));
+ latexJIndexED->setValidator(new NoNewLineValidator(latexJIndexED));
+ latexNomenclED->setValidator(new NoNewLineValidator(latexNomenclED));
+ latexChecktexED->setValidator(new NoNewLineValidator(latexChecktexED));
+
connect(latexEncodingCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(latexEncodingED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
connect(latexDviPaperED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
- connect(latexPaperSizeCO, SIGNAL(activated(int)),
- this, SIGNAL(changed()));
connect(latexNomenclED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
}
-void PrefLatex::apply(LyXRC & rc) const
+void PrefLatex::applyRC(LyXRC & rc) const
{
// If bibtex is not empty, bibopt contains the options, otherwise
// it is a customized bibtex command with options.
rc.nomencl_command = fromqstr(latexNomenclED->text());
rc.auto_reset_options = latexAutoresetCB->isChecked();
rc.view_dvi_paper_option = fromqstr(latexDviPaperED->text());
- rc.default_papersize =
- form_->toPaperSize(latexPaperSizeCO->currentIndex());
#if defined(__CYGWIN__) || defined(_WIN32)
rc.windows_style_tex_paths = pathCB->isChecked();
#endif
}
-void PrefLatex::update(LyXRC const & rc)
+void PrefLatex::updateRC(LyXRC const & rc)
{
latexBibtexCO->clear();
latexNomenclED->setText(toqstr(rc.nomencl_command));
latexAutoresetCB->setChecked(rc.auto_reset_options);
latexDviPaperED->setText(toqstr(rc.view_dvi_paper_option));
- latexPaperSizeCO->setCurrentIndex(
- form_->fromPaperSize(rc.default_papersize));
#if defined(__CYGWIN__) || defined(_WIN32)
pathCB->setChecked(rc.windows_style_tex_paths);
#endif
/////////////////////////////////////////////////////////////////////
PrefScreenFonts::PrefScreenFonts(GuiPreferences * form)
- : PrefModule(qt_(catLookAndFeel), qt_("Screen Fonts"), form)
+ : PrefModule(catLookAndFeel, N_("Screen Fonts"), form)
{
setupUi(this);
}
-void PrefScreenFonts::apply(LyXRC & rc) const
+void PrefScreenFonts::applyRC(LyXRC & rc) const
{
LyXRC const oldrc = rc;
}
-void PrefScreenFonts::update(LyXRC const & rc)
+void PrefScreenFonts::updateRC(LyXRC const & rc)
{
setComboxFont(screenRomanCO, rc.roman_font_name,
rc.roman_font_foundry);
updateScreenFontSizes(rc);
pixmapCacheCB->setChecked(rc.use_pixmap_cache);
-#if defined(Q_WS_X11)
+#if defined(Q_WS_X11) || defined(QPA_XCB)
pixmapCacheCB->setEnabled(false);
#endif
//
/////////////////////////////////////////////////////////////////////
-namespace {
-
-struct ColorSorter
-{
- bool operator()(ColorCode lhs, ColorCode rhs) const {
- return
- compare_no_case(lcolor.getGUIName(lhs), lcolor.getGUIName(rhs)) < 0;
- }
-};
-
-} // namespace anon
PrefColors::PrefColors(GuiPreferences * form)
- : PrefModule(qt_(catLookAndFeel), qt_("Colors"), form)
+ : PrefModule(catLookAndFeel, N_("Colors"), form)
{
setupUi(this);
if (lc == Color_none
|| lc == Color_black
|| lc == Color_white
- || lc == Color_red
- || lc == Color_green
|| lc == Color_blue
+ || lc == Color_brown
|| lc == Color_cyan
+ || lc == Color_darkgray
+ || lc == Color_gray
+ || lc == Color_green
+ || lc == Color_lightgray
+ || lc == Color_lime
|| lc == Color_magenta
+ || lc == Color_olive
+ || lc == Color_orange
+ || lc == Color_pink
+ || lc == Color_purple
+ || lc == Color_red
+ || lc == Color_teal
+ || lc == Color_violet
|| lc == Color_yellow
|| lc == Color_inherit
|| lc == Color_ignore)
continue;
lcolors_.push_back(lc);
}
- sort(lcolors_.begin(), lcolors_.end(), ColorSorter());
+ qSort(lcolors_.begin(), lcolors_.end(), ColorSorter);
vector<ColorCode>::const_iterator cit = lcolors_.begin();
vector<ColorCode>::const_iterator const end = lcolors_.end();
for (; cit != end; ++cit) {
}
-void PrefColors::apply(LyXRC & rc) const
+void PrefColors::applyRC(LyXRC & rc) const
{
LyXRC oldrc = rc;
}
-void PrefColors::update(LyXRC const & rc)
+void PrefColors::updateRC(LyXRC const & rc)
{
for (unsigned int i = 0; i < lcolors_.size(); ++i) {
QColor color = QColor(guiApp->colorCache().get(lcolors_[i], false));
/////////////////////////////////////////////////////////////////////
PrefDisplay::PrefDisplay(GuiPreferences * form)
- : PrefModule(qt_(catLookAndFeel), qt_("Display"), form)
+ : PrefModule(catLookAndFeel, N_("Display"), form)
{
setupUi(this);
connect(displayGraphicsCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
}
-void PrefDisplay::on_displayGraphicsCB_toggled(bool on)
-{
- instantPreviewCO->setEnabled(on);
- previewSizeSB->setEnabled(on && instantPreviewCO->currentIndex() > 0);
-}
-
-
-void PrefDisplay::apply(LyXRC & rc) const
+void PrefDisplay::applyRC(LyXRC & rc) const
{
switch (instantPreviewCO->currentIndex()) {
case 0:
rc.preview = LyXRC::PREVIEW_OFF;
break;
case 1:
- rc.preview = LyXRC::PREVIEW_NO_MATH;
+ if (rc.preview != LyXRC::PREVIEW_NO_MATH) {
+ rc.preview = LyXRC::PREVIEW_NO_MATH;
+ form_->updatePreviews();
+ }
break;
case 2:
- rc.preview = LyXRC::PREVIEW_ON;
+ if (rc.preview != LyXRC::PREVIEW_ON) {
+ rc.preview = LyXRC::PREVIEW_ON;
+ form_->updatePreviews();
+ }
break;
}
}
-void PrefDisplay::update(LyXRC const & rc)
+void PrefDisplay::updateRC(LyXRC const & rc)
{
switch (rc.preview) {
case LyXRC::PREVIEW_OFF:
}
displayGraphicsCB->setChecked(rc.display_graphics);
- instantPreviewCO->setEnabled(rc.display_graphics);
previewSizeSB->setValue(rc.preview_scale_factor);
paragraphMarkerCB->setChecked(rc.paragraph_markers);
previewSizeSB->setEnabled(
/////////////////////////////////////////////////////////////////////
PrefPaths::PrefPaths(GuiPreferences * form)
- : PrefModule(QString(), qt_("Paths"), form)
+ : PrefModule(QString(), N_("Paths"), form)
{
setupUi(this);
connect(texinputsPrefixED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+
+ pathPrefixED->setValidator(new NoNewLineValidator(pathPrefixED));
+ texinputsPrefixED->setValidator(new NoNewLineValidator(texinputsPrefixED));
}
-void PrefPaths::apply(LyXRC & rc) const
+void PrefPaths::applyRC(LyXRC & rc) const
{
rc.document_path = internal_path(fromqstr(workingDirED->text()));
rc.example_path = internal_path(fromqstr(exampleDirED->text()));
}
-void PrefPaths::update(LyXRC const & rc)
+void PrefPaths::updateRC(LyXRC const & rc)
{
workingDirED->setText(toqstr(external_path(rc.document_path)));
exampleDirED->setText(toqstr(external_path(rc.example_path)));
/////////////////////////////////////////////////////////////////////
PrefSpellchecker::PrefSpellchecker(GuiPreferences * form)
- : PrefModule(qt_(catLanguage), qt_("Spellchecker"), form)
+ : PrefModule(catLanguage, N_("Spellchecker"), form)
{
setupUi(this);
this, SIGNAL(changed()));
connect(spellcheckNotesCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
+
+ altLanguageED->setValidator(new NoNewLineValidator(altLanguageED));
+ escapeCharactersED->setValidator(new NoNewLineValidator(escapeCharactersED));
#else
spellcheckerCB->setEnabled(false);
altLanguageED->setEnabled(false);
}
-void PrefSpellchecker::apply(LyXRC & rc) const
+void PrefSpellchecker::applyRC(LyXRC & rc) const
{
string const speller = fromqstr(spellcheckerCB->
itemData(spellcheckerCB->currentIndex()).toString());
}
-void PrefSpellchecker::update(LyXRC const & rc)
+void PrefSpellchecker::updateRC(LyXRC const & rc)
{
spellcheckerCB->setCurrentIndex(
spellcheckerCB->findData(toqstr(rc.spellchecker)));
void PrefSpellchecker::on_spellcheckerCB_currentIndexChanged(int index)
{
QString spellchecker = spellcheckerCB->itemData(index).toString();
-
+
compoundWordCB->setEnabled(spellchecker == QString("aspell"));
}
-
-
-
+
+
+
/////////////////////////////////////////////////////////////////////
//
// PrefConverters
PrefConverters::PrefConverters(GuiPreferences * form)
- : PrefModule(qt_(catFiles), qt_("Converters"), form)
+ : PrefModule(catFiles, N_("Converters"), form)
{
setupUi(this);
connect(maxAgeLE, SIGNAL(textEdited(QString)),
this, SIGNAL(changed()));
+ converterED->setValidator(new NoNewLineValidator(converterED));
+ converterFlagED->setValidator(new NoNewLineValidator(converterFlagED));
maxAgeLE->setValidator(new QDoubleValidator(maxAgeLE));
//converterDefGB->setFocusProxy(convertersLW);
}
-void PrefConverters::apply(LyXRC & rc) const
+void PrefConverters::applyRC(LyXRC & rc) const
{
rc.use_converter_cache = cacheCB->isChecked();
rc.converter_cache_maxage = int(widgetToDouble(maxAgeLE) * 86400.0);
}
-void PrefConverters::update(LyXRC const & rc)
+void PrefConverters::updateRC(LyXRC const & rc)
{
cacheCB->setChecked(rc.use_converter_cache);
QString max_age;
Converters::const_iterator cend = form_->converters().end();
for (; ccit != cend; ++ccit) {
QString const name =
- qt_(ccit->From->prettyname()) + " -> " + qt_(ccit->To->prettyname());
- int type = form_->converters().getNumber(ccit->From->name(), ccit->To->name());
+ qt_(ccit->From()->prettyname()) + " -> " + qt_(ccit->To()->prettyname());
+ int type = form_->converters().getNumber(ccit->From()->name(), ccit->To()->name());
new QListWidgetItem(name, convertersLW, type);
}
convertersLW->sortItems(Qt::AscendingOrder);
{
int const cnr = convertersLW->currentItem()->type();
Converter const & c(form_->converters().get(cnr));
- converterFromCO->setCurrentIndex(form_->formats().getNumber(c.from));
- converterToCO->setCurrentIndex(form_->formats().getNumber(c.to));
- converterED->setText(toqstr(c.command));
- converterFlagED->setText(toqstr(c.flags));
+ converterFromCO->setCurrentIndex(form_->formats().getNumber(c.from()));
+ converterToCO->setCurrentIndex(form_->formats().getNumber(c.to()));
+ converterED->setText(toqstr(c.command()));
+ converterFlagED->setText(toqstr(c.flags()));
updateButtons();
}
void PrefConverters::updateButtons()
{
- if (form_->formats().size() == 0)
+ if (form_->formats().empty())
return;
Format const & from = form_->formats().get(converterFromCO->currentIndex());
Format const & to = form_->formats().get(converterToCO->currentIndex());
bool const valid = !(converterED->text().isEmpty()
|| from.name() == to.name());
- int const cnr = convertersLW->currentItem()->type();
- Converter const & c = form_->converters().get(cnr);
- string const old_command = c.command;
- string const old_flag = c.flags;
+ string old_command;
+ string old_flag;
+
+ if (convertersLW->count() > 0) {
+ int const cnr = convertersLW->currentItem()->type();
+ Converter const & c = form_->converters().get(cnr);
+ old_command = c.command();
+ old_flag = c.flags();
+ }
+
string const new_command = fromqstr(converterED->text());
string const new_flag = fromqstr(converterFlagED->text());
/////////////////////////////////////////////////////////////////////
PrefFileformats::PrefFileformats(GuiPreferences * form)
- : PrefModule(qt_(catFiles), qt_("File Formats"), form)
+ : PrefModule(catFiles, N_("File Formats"), form)
{
setupUi(this);
+
formatED->setValidator(new FormatNameValidator(formatsCB, form_->formats()));
formatsCB->setValidator(new FormatPrettynameValidator(formatsCB, form_->formats()));
+ extensionsED->setValidator(new NoNewLineValidator(extensionsED));
+ shortcutED->setValidator(new NoNewLineValidator(shortcutED));
+ editorED->setValidator(new NoNewLineValidator(editorED));
+ viewerED->setValidator(new NoNewLineValidator(viewerED));
+ copierED->setValidator(new NoNewLineValidator(copierED));
connect(documentCB, SIGNAL(clicked()),
this, SLOT(setFlags()));
this, SIGNAL(changed()));
connect(defaultFormatCB, SIGNAL(activated(QString)),
this, SIGNAL(changed()));
+ connect(defaultOTFFormatCB, SIGNAL(activated(QString)),
+ this, SIGNAL(changed()));
connect(viewerCO, SIGNAL(activated(int)),
this, SIGNAL(changed()));
connect(editorCO, SIGNAL(activated(int)),
namespace {
-string const l10n_shortcut(string const prettyname, string const shortcut)
+string const l10n_shortcut(string const & prettyname, string const & shortcut)
{
if (shortcut.empty())
return string();
} // namespace anon
-void PrefFileformats::apply(LyXRC & rc) const
+void PrefFileformats::applyRC(LyXRC & rc) const
{
QString const default_format = defaultFormatCB->itemData(
defaultFormatCB->currentIndex()).toString();
rc.default_view_format = fromqstr(default_format);
+ QString const default_otf_format = defaultOTFFormatCB->itemData(
+ defaultOTFFormatCB->currentIndex()).toString();
+ rc.default_otf_view_format = fromqstr(default_otf_format);
}
-void PrefFileformats::update(LyXRC const & rc)
+void PrefFileformats::updateRC(LyXRC const & rc)
{
viewer_alternatives = rc.viewer_alternatives;
editor_alternatives = rc.editor_alternatives;
bool const init = defaultFormatCB->currentText().isEmpty();
updateView();
if (init) {
- int const pos =
+ int pos =
defaultFormatCB->findData(toqstr(rc.default_view_format));
defaultFormatCB->setCurrentIndex(pos);
+ pos = defaultOTFFormatCB->findData(toqstr(rc.default_otf_view_format));
+ defaultOTFFormatCB->setCurrentIndex(pos);
+ defaultOTFFormatCB->setCurrentIndex(pos);
}
}
{
QString const current = formatsCB->currentText();
QString const current_def = defaultFormatCB->currentText();
+ QString const current_def_otf = defaultOTFFormatCB->currentText();
// update comboboxes with formats
formatsCB->blockSignals(true);
defaultFormatCB->blockSignals(true);
+ defaultOTFFormatCB->blockSignals(true);
formatsCB->clear();
defaultFormatCB->clear();
+ defaultOTFFormatCB->clear();
form_->formats().sort();
Formats::const_iterator cit = form_->formats().begin();
Formats::const_iterator end = form_->formats().end();
for (; cit != end; ++cit) {
formatsCB->addItem(qt_(cit->prettyname()),
QVariant(form_->formats().getNumber(cit->name())));
- if (form_->converters().isReachable("latex", cit->name())
+ if (cit->viewer().empty())
+ continue;
+ if (form_->converters().isReachable("xhtml", cit->name())
|| form_->converters().isReachable("dviluatex", cit->name())
- || form_->converters().isReachable("pdflatex", cit->name())
|| form_->converters().isReachable("luatex", cit->name())
- || form_->converters().isReachable("xetex", cit->name()))
+ || form_->converters().isReachable("xetex", cit->name())) {
+ defaultFormatCB->addItem(qt_(cit->prettyname()),
+ QVariant(toqstr(cit->name())));
+ defaultOTFFormatCB->addItem(qt_(cit->prettyname()),
+ QVariant(toqstr(cit->name())));
+ } else if (form_->converters().isReachable("latex", cit->name())
+ || form_->converters().isReachable("pdflatex", cit->name()))
defaultFormatCB->addItem(qt_(cit->prettyname()),
QVariant(toqstr(cit->name())));
}
- // restore selection
+ // restore selections
int item = formatsCB->findText(current, Qt::MatchExactly);
formatsCB->setCurrentIndex(item < 0 ? 0 : item);
on_formatsCB_currentIndexChanged(item < 0 ? 0 : item);
item = defaultFormatCB->findText(current_def, Qt::MatchExactly);
defaultFormatCB->setCurrentIndex(item < 0 ? 0 : item);
+ item = defaultOTFFormatCB->findText(current_def_otf, Qt::MatchExactly);
+ defaultOTFFormatCB->setCurrentIndex(item < 0 ? 0 : item);
formatsCB->blockSignals(false);
defaultFormatCB->blockSignals(false);
+ defaultOTFFormatCB->blockSignals(false);
}
void PrefFileformats::on_formatsCB_currentIndexChanged(int i)
{
- if (form_->formats().size() == 0)
+ if (form_->formats().empty())
return;
int const nr = formatsCB->itemData(i).toInt();
Format const f = form_->formats().get(nr);
formatED->setText(toqstr(f.name()));
copierED->setText(toqstr(form_->movers().command(f.name())));
- extensionED->setText(toqstr(f.extension()));
+ extensionsED->setText(toqstr(f.extensions()));
+ mimeED->setText(toqstr(f.mime()));
shortcutED->setText(
toqstr(l10n_shortcut(f.prettyname(), f.shortcut())));
documentCB->setChecked((f.documentFormat()));
}
-void PrefFileformats::on_extensionED_textEdited(const QString & s)
+void PrefFileformats::on_extensionsED_textEdited(const QString & s)
{
- currentFormat().setExtension(fromqstr(s));
+ currentFormat().setExtensions(fromqstr(s));
changed();
}
+
void PrefFileformats::on_viewerED_textEdited(const QString & s)
{
currentFormat().setViewer(fromqstr(s));
}
+void PrefFileformats::on_mimeED_textEdited(const QString & s)
+{
+ currentFormat().setMime(fromqstr(s));
+ changed();
+}
+
+
void PrefFileformats::on_shortcutED_textEdited(const QString & s)
{
string const new_shortcut = fromqstr(s);
void updateComboBox(LyXRC::Alternatives const & alts,
string const & fmt, QComboBox * combo)
{
- LyXRC::Alternatives::const_iterator it =
+ LyXRC::Alternatives::const_iterator it =
alts.find(fmt);
if (it != alts.end()) {
LyXRC::CommandSet const & cmds = it->second;
- LyXRC::CommandSet::const_iterator sit =
+ LyXRC::CommandSet::const_iterator sit =
cmds.begin();
- LyXRC::CommandSet::const_iterator const sen =
+ LyXRC::CommandSet::const_iterator const sen =
cmds.end();
for (; sit != sen; ++sit) {
QString const qcmd = toqstr(*sit);
void PrefFileformats::on_formatNewPB_clicked()
{
- form_->formats().add("", "", "", "", "", "", Format::none);
+ form_->formats().add("", "", "", "", "", "", "", Format::none);
updateView();
formatsCB->setCurrentIndex(0);
formatsCB->setFocus(Qt::OtherFocusReason);
/////////////////////////////////////////////////////////////////////
PrefLanguage::PrefLanguage(GuiPreferences * form)
- : PrefModule(qt_(catLanguage), qt_("Language"), form)
+ : PrefModule(catLanguage, N_("Language"), form)
{
setupUi(this);
- connect(rtlGB, SIGNAL(clicked()),
- this, SIGNAL(changed()));
connect(visualCursorRB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(logicalCursorRB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(defaultDecimalPointLE, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+ connect(defaultLengthUnitCO, SIGNAL(activated(int)),
+ this, SIGNAL(changed()));
- uiLanguageCO->clear();
+ languagePackageED->setValidator(new NoNewLineValidator(languagePackageED));
+ startCommandED->setValidator(new NoNewLineValidator(startCommandED));
+ endCommandED->setValidator(new NoNewLineValidator(endCommandED));
- QAbstractItemModel * language_model = guiApp->languageModel();
- // FIXME: it would be nice if sorting was enabled/disabled via a checkbox.
- language_model->sort(0);
defaultDecimalPointLE->setInputMask("X; ");
defaultDecimalPointLE->setMaxLength(1);
- set<string> added;
+ defaultLengthUnitCO->addItem(lyx::qt_(unit_name_gui[Length::CM]), Length::CM);
+ defaultLengthUnitCO->addItem(lyx::qt_(unit_name_gui[Length::IN]), Length::IN);
+
+ QAbstractItemModel * language_model = guiApp->languageModel();
+ language_model->sort(0);
uiLanguageCO->blockSignals(true);
+ uiLanguageCO->clear();
uiLanguageCO->addItem(qt_("Default"), toqstr("auto"));
for (int i = 0; i != language_model->rowCount(); ++i) {
QModelIndex index = language_model->index(i, 0);
// each language code only once
string const name = fromqstr(index.data(Qt::UserRole).toString());
Language const * lang = languages.getLanguage(name);
+ if (!lang)
+ continue;
// never remove the currently selected language
- if (lang && name != form->rc().gui_language && name != lyxrc.gui_language)
- if (!lang->translated() || added.find(lang->code()) != added.end())
- continue;
- added.insert(lang->code());
+ if (name != form->rc().gui_language
+ && name != lyxrc.gui_language
+ && (!Messages::available(lang->code())
+ || !lang->hasGuiSupport()))
+ continue;
uiLanguageCO->addItem(index.data(Qt::DisplayRole).toString(),
- index.data(Qt::UserRole).toString());
+ index.data(Qt::UserRole).toString());
}
uiLanguageCO->blockSignals(false);
}
}
-void PrefLanguage::apply(LyXRC & rc) const
+void PrefLanguage::applyRC(LyXRC & rc) const
{
- // FIXME: remove rtl_support bool
- rc.rtl_support = rtlGB->isChecked();
- rc.visual_cursor = rtlGB->isChecked() && visualCursorRB->isChecked();
+ rc.visual_cursor = visualCursorRB->isChecked();
rc.mark_foreign_language = markForeignCB->isChecked();
rc.language_auto_begin = autoBeginCB->isChecked();
rc.language_auto_end = autoEndCB->isChecked();
rc.gui_language = fromqstr(
uiLanguageCO->itemData(uiLanguageCO->currentIndex()).toString());
rc.default_decimal_point = fromqstr(defaultDecimalPointLE->text());
+ rc.default_length_unit = (Length::UNIT) defaultLengthUnitCO->itemData(defaultLengthUnitCO->currentIndex()).toInt();
}
-void PrefLanguage::update(LyXRC const & rc)
+void PrefLanguage::updateRC(LyXRC const & rc)
{
- // FIXME: remove rtl_support bool
- rtlGB->setChecked(rc.rtl_support);
if (rc.visual_cursor)
visualCursorRB->setChecked(true);
else
startCommandED->setText(toqstr(rc.language_command_begin));
endCommandED->setText(toqstr(rc.language_command_end));
defaultDecimalPointLE->setText(toqstr(rc.default_decimal_point));
+ int pos = defaultLengthUnitCO->findData(int(rc.default_length_unit));
+ defaultLengthUnitCO->setCurrentIndex(pos);
- int pos = uiLanguageCO->findData(toqstr(rc.gui_language));
+ pos = uiLanguageCO->findData(toqstr(rc.gui_language));
uiLanguageCO->blockSignals(true);
uiLanguageCO->setCurrentIndex(pos);
uiLanguageCO->blockSignals(false);
/////////////////////////////////////////////////////////////////////
//
-// PrefPrinter
+// PrefUserInterface
//
/////////////////////////////////////////////////////////////////////
-PrefPrinter::PrefPrinter(GuiPreferences * form)
- : PrefModule(qt_(catOutput), qt_("Printer"), form)
+PrefUserInterface::PrefUserInterface(GuiPreferences * form)
+ : PrefModule(catLookAndFeel, N_("User Interface"), form)
{
setupUi(this);
- connect(printerAdaptCB, SIGNAL(clicked()),
- this, SIGNAL(changed()));
- connect(printerCommandED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerNameED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerPageRangeED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerCopiesED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerReverseED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerToPrinterED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerExtensionED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerSpoolCommandED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerPaperTypeED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerEvenED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerOddED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerCollatedED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(printerLandscapeED, SIGNAL(textChanged(QString)),
+ connect(uiFilePB, SIGNAL(clicked()),
+ this, SLOT(selectUi()));
+ connect(uiFileED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
- connect(printerToFileED, SIGNAL(textChanged(QString)),
+ connect(iconSetCO, SIGNAL(activated(int)),
this, SIGNAL(changed()));
- connect(printerExtraED, SIGNAL(textChanged(QString)),
+ connect(useSystemThemeIconsCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
- connect(printerSpoolPrefixED, SIGNAL(textChanged(QString)),
+ connect(lastfilesSB, SIGNAL(valueChanged(int)),
this, SIGNAL(changed()));
- connect(printerPaperSizeED, SIGNAL(textChanged(QString)),
+ connect(tooltipCB, SIGNAL(toggled(bool)),
this, SIGNAL(changed()));
+ lastfilesSB->setMaximum(maxlastfiles);
+
+ iconSetCO->addItem(qt_("Default"), QString());
+ iconSetCO->addItem(qt_("Classic"), "classic");
+ iconSetCO->addItem(qt_("Oxygen"), "oxygen");
+
+#if (!(defined Q_WS_X11 || defined(QPA_XCB)) || QT_VERSION < 0x040600)
+ useSystemThemeIconsCB->hide();
+#endif
}
-void PrefPrinter::apply(LyXRC & rc) const
+void PrefUserInterface::applyRC(LyXRC & rc) const
{
- rc.print_adapt_output = printerAdaptCB->isChecked();
- rc.print_command = fromqstr(printerCommandED->text());
- rc.printer = fromqstr(printerNameED->text());
+ rc.icon_set = fromqstr(iconSetCO->itemData(
+ iconSetCO->currentIndex()).toString());
- rc.print_pagerange_flag = fromqstr(printerPageRangeED->text());
- rc.print_copies_flag = fromqstr(printerCopiesED->text());
- rc.print_reverse_flag = fromqstr(printerReverseED->text());
- rc.print_to_printer = fromqstr(printerToPrinterED->text());
- rc.print_file_extension = fromqstr(printerExtensionED->text());
- rc.print_spool_command = fromqstr(printerSpoolCommandED->text());
- rc.print_paper_flag = fromqstr(printerPaperTypeED->text());
- rc.print_evenpage_flag = fromqstr(printerEvenED->text());
- rc.print_oddpage_flag = fromqstr(printerOddED->text());
- rc.print_collcopies_flag = fromqstr(printerCollatedED->text());
- rc.print_landscape_flag = fromqstr(printerLandscapeED->text());
- rc.print_to_file = internal_path(fromqstr(printerToFileED->text()));
- rc.print_extra_options = fromqstr(printerExtraED->text());
- rc.print_spool_printerprefix = fromqstr(printerSpoolPrefixED->text());
- rc.print_paper_dimension_flag = fromqstr(printerPaperSizeED->text());
+ rc.ui_file = internal_path(fromqstr(uiFileED->text()));
+ rc.use_system_theme_icons = useSystemThemeIconsCB->isChecked();
+ rc.num_lastfiles = lastfilesSB->value();
+ rc.use_tooltip = tooltipCB->isChecked();
}
-void PrefPrinter::update(LyXRC const & rc)
+void PrefUserInterface::updateRC(LyXRC const & rc)
{
- printerAdaptCB->setChecked(rc.print_adapt_output);
- printerCommandED->setText(toqstr(rc.print_command));
- printerNameED->setText(toqstr(rc.printer));
+ int iconset = iconSetCO->findData(toqstr(rc.icon_set));
+ if (iconset < 0)
+ iconset = 0;
+ iconSetCO->setCurrentIndex(iconset);
+ useSystemThemeIconsCB->setChecked(rc.use_system_theme_icons);
+ uiFileED->setText(toqstr(external_path(rc.ui_file)));
+ lastfilesSB->setValue(rc.num_lastfiles);
+ tooltipCB->setChecked(rc.use_tooltip);
+}
- printerPageRangeED->setText(toqstr(rc.print_pagerange_flag));
- printerCopiesED->setText(toqstr(rc.print_copies_flag));
- printerReverseED->setText(toqstr(rc.print_reverse_flag));
- printerToPrinterED->setText(toqstr(rc.print_to_printer));
- printerExtensionED->setText(toqstr(rc.print_file_extension));
- printerSpoolCommandED->setText(toqstr(rc.print_spool_command));
- printerPaperTypeED->setText(toqstr(rc.print_paper_flag));
- printerEvenED->setText(toqstr(rc.print_evenpage_flag));
- printerOddED->setText(toqstr(rc.print_oddpage_flag));
- printerCollatedED->setText(toqstr(rc.print_collcopies_flag));
- printerLandscapeED->setText(toqstr(rc.print_landscape_flag));
- printerToFileED->setText(toqstr(external_path(rc.print_to_file)));
- printerExtraED->setText(toqstr(rc.print_extra_options));
- printerSpoolPrefixED->setText(toqstr(rc.print_spool_printerprefix));
- printerPaperSizeED->setText(toqstr(rc.print_paper_dimension_flag));
+
+void PrefUserInterface::selectUi()
+{
+ QString file = form_->browseUI(internalPath(uiFileED->text()));
+ if (!file.isEmpty())
+ uiFileED->setText(file);
}
/////////////////////////////////////////////////////////////////////
//
-// PrefUserInterface
+// PrefDocumentHandling
//
/////////////////////////////////////////////////////////////////////
-PrefUserInterface::PrefUserInterface(GuiPreferences * form)
- : PrefModule(qt_(catLookAndFeel), qt_("User Interface"), form)
+PrefDocHandling::PrefDocHandling(GuiPreferences * form)
+ : PrefModule(catLookAndFeel, N_("Document Handling"), form)
{
setupUi(this);
this, SIGNAL(changed()));
connect(singleInstanceCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
-#if QT_VERSION < 0x040500
- singleCloseTabButtonCB->setEnabled(false);
-#endif
connect(singleCloseTabButtonCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
- connect(uiFilePB, SIGNAL(clicked()),
- this, SLOT(selectUi()));
- connect(uiFileED, SIGNAL(textChanged(QString)),
- this, SIGNAL(changed()));
- connect(iconSetCO, SIGNAL(activated(int)),
+ connect(closeLastViewCO, SIGNAL(activated(int)),
this, SIGNAL(changed()));
connect(restoreCursorCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
this, SIGNAL(changed()));
connect(saveCompressedCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
- connect(lastfilesSB, SIGNAL(valueChanged(int)),
- this, SIGNAL(changed()));
- connect(tooltipCB, SIGNAL(toggled(bool)),
+ connect(saveOriginCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
- lastfilesSB->setMaximum(maxlastfiles);
-
- iconSetCO->addItem(qt_("Default"), QString());
- iconSetCO->addItem(qt_("Classic"), "classic");
- iconSetCO->addItem(qt_("Oxygen"), "oxygen");
}
-void PrefUserInterface::apply(LyXRC & rc) const
+void PrefDocHandling::applyRC(LyXRC & rc) const
{
- rc.icon_set = fromqstr(iconSetCO->itemData(
- iconSetCO->currentIndex()).toString());
-
- rc.ui_file = internal_path(fromqstr(uiFileED->text()));
rc.use_lastfilepos = restoreCursorCB->isChecked();
rc.load_session = loadSessionCB->isChecked();
rc.allow_geometry_session = allowGeometrySessionCB->isChecked();
rc.autosave = autoSaveCB->isChecked() ? autoSaveSB->value() * 60 : 0;
rc.make_backup = backupCB->isChecked();
rc.save_compressed = saveCompressedCB->isChecked();
- rc.num_lastfiles = lastfilesSB->value();
- rc.use_tooltip = tooltipCB->isChecked();
+ rc.save_origin = saveOriginCB->isChecked();
rc.open_buffers_in_tabs = openDocumentsInTabsCB->isChecked();
rc.single_instance = singleInstanceCB->isChecked();
rc.single_close_tab_button = singleCloseTabButtonCB->isChecked();
-#if QT_VERSION < 0x040500
- rc.single_close_tab_button = true;
-#endif
+
+ switch (closeLastViewCO->currentIndex()) {
+ case 0:
+ rc.close_buffer_with_last_view = "yes";
+ break;
+ case 1:
+ rc.close_buffer_with_last_view = "no";
+ break;
+ case 2:
+ rc.close_buffer_with_last_view = "ask";
+ break;
+ default:
+ ;
+ }
}
-void PrefUserInterface::update(LyXRC const & rc)
+void PrefDocHandling::updateRC(LyXRC const & rc)
{
- int iconset = iconSetCO->findData(toqstr(rc.icon_set));
- if (iconset < 0)
- iconset = 0;
- iconSetCO->setCurrentIndex(iconset);
- uiFileED->setText(toqstr(external_path(rc.ui_file)));
restoreCursorCB->setChecked(rc.use_lastfilepos);
loadSessionCB->setChecked(rc.load_session);
allowGeometrySessionCB->setChecked(rc.allow_geometry_session);
autoSaveSB->setEnabled(autosave);
backupCB->setChecked(rc.make_backup);
saveCompressedCB->setChecked(rc.save_compressed);
- lastfilesSB->setValue(rc.num_lastfiles);
- tooltipCB->setChecked(rc.use_tooltip);
+ saveOriginCB->setChecked(rc.save_origin);
openDocumentsInTabsCB->setChecked(rc.open_buffers_in_tabs);
singleInstanceCB->setChecked(rc.single_instance && !rc.lyxpipes.empty());
singleInstanceCB->setEnabled(!rc.lyxpipes.empty());
singleCloseTabButtonCB->setChecked(rc.single_close_tab_button);
+ if (rc.close_buffer_with_last_view == "yes")
+ closeLastViewCO->setCurrentIndex(0);
+ else if (rc.close_buffer_with_last_view == "no")
+ closeLastViewCO->setCurrentIndex(1);
+ else if (rc.close_buffer_with_last_view == "ask")
+ closeLastViewCO->setCurrentIndex(2);
}
-void PrefUserInterface::selectUi()
-{
- QString file = form_->browseUI(internalPath(uiFileED->text()));
- if (!file.isEmpty())
- uiFileED->setText(file);
-}
-
-
-void PrefUserInterface::on_clearSessionPB_clicked()
+void PrefDocHandling::on_clearSessionPB_clicked()
{
guiApp->clearSession();
}
/////////////////////////////////////////////////////////////////////
PrefEdit::PrefEdit(GuiPreferences * form)
- : PrefModule(qt_(catEditing), qt_("Control"), form)
+ : PrefModule(catEditing, N_("Control"), form)
{
setupUi(this);
this, SIGNAL(changed()));
connect(scrollBelowCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
- connect(macLikeWordMovementCB, SIGNAL(clicked()),
+ connect(macLikeCursorMovementCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(sortEnvironmentsCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
this, SIGNAL(changed()));
connect(toggleScrollbarCB, SIGNAL(toggled(bool)),
this, SIGNAL(changed()));
+ connect(toggleStatusbarCB, SIGNAL(toggled(bool)),
+ this, SIGNAL(changed()));
connect(toggleToolbarsCB, SIGNAL(toggled(bool)),
this, SIGNAL(changed()));
}
-void PrefEdit::apply(LyXRC & rc) const
+void PrefEdit::applyRC(LyXRC & rc) const
{
rc.cursor_follows_scrollbar = cursorFollowsCB->isChecked();
rc.scroll_below_document = scrollBelowCB->isChecked();
- rc.mac_like_word_movement = macLikeWordMovementCB->isChecked();
+ rc.mac_like_cursor_movement = macLikeCursorMovementCB->isChecked();
rc.sort_layouts = sortEnvironmentsCB->isChecked();
rc.group_layouts = groupEnvironmentsCB->isChecked();
switch (macroEditStyleCO->currentIndex()) {
rc.cursor_width = cursorWidthSB->value();
rc.full_screen_toolbars = toggleToolbarsCB->isChecked();
rc.full_screen_scrollbar = toggleScrollbarCB->isChecked();
+ rc.full_screen_statusbar = toggleStatusbarCB->isChecked();
rc.full_screen_tabbar = toggleTabbarCB->isChecked();
rc.full_screen_menubar = toggleMenubarCB->isChecked();
rc.full_screen_width = fullscreenWidthSB->value();
}
-void PrefEdit::update(LyXRC const & rc)
+void PrefEdit::updateRC(LyXRC const & rc)
{
cursorFollowsCB->setChecked(rc.cursor_follows_scrollbar);
scrollBelowCB->setChecked(rc.scroll_below_document);
- macLikeWordMovementCB->setChecked(rc.mac_like_word_movement);
+ macLikeCursorMovementCB->setChecked(rc.mac_like_cursor_movement);
sortEnvironmentsCB->setChecked(rc.sort_layouts);
groupEnvironmentsCB->setChecked(rc.group_layouts);
macroEditStyleCO->setCurrentIndex(rc.macro_edit_style);
cursorWidthSB->setValue(rc.cursor_width);
toggleScrollbarCB->setChecked(rc.full_screen_scrollbar);
+ toggleStatusbarCB->setChecked(rc.full_screen_statusbar);
toggleToolbarsCB->setChecked(rc.full_screen_toolbars);
toggleTabbarCB->setChecked(rc.full_screen_tabbar);
toggleMenubarCB->setChecked(rc.full_screen_menubar);
PrefShortcuts::PrefShortcuts(GuiPreferences * form)
- : PrefModule(qt_(catEditing), qt_("Shortcuts"), form)
+ : PrefModule(catEditing, N_("Shortcuts"), form),
+ editItem_(0), mathItem_(0), bufferItem_(0), layoutItem_(0),
+ systemItem_(0)
{
setupUi(this);
shortcut_bc_.setOK(shortcut_->okPB);
shortcut_bc_.setCancel(shortcut_->cancelPB);
- connect(shortcut_->okPB, SIGNAL(clicked()),
- shortcut_, SLOT(accept()));
connect(shortcut_->okPB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(shortcut_->cancelPB, SIGNAL(clicked()),
}
-void PrefShortcuts::apply(LyXRC & rc) const
+void PrefShortcuts::applyRC(LyXRC & rc) const
{
rc.bind_file = internal_path(fromqstr(bindFileED->text()));
// write user_bind and user_unbind to .lyx/bind/user.bind
}
-void PrefShortcuts::update(LyXRC const & rc)
+void PrefShortcuts::updateRC(LyXRC const & rc)
{
bindFileED->setText(toqstr(external_path(rc.bind_file)));
//
QString const lfun_name = toqstr(from_utf8(action_name)
+ ' ' + lfun.argument());
QString const shortcut = toqstr(seq.print(KeySequence::ForGui));
- KeyMap::ItemType item_tag = tag;
QTreeWidgetItem * newItem = 0;
// for unbind items, try to find an existing item in the system bind list
QList<QTreeWidgetItem*> const items = shortcutsTW->findItems(lfun_name,
Qt::MatchFlags(Qt::MatchExactly | Qt::MatchRecursive), 0);
for (int i = 0; i < items.size(); ++i) {
- if (items[i]->text(1) == shortcut)
+ if (items[i]->text(1) == shortcut) {
newItem = items[i];
break;
}
+ }
// if not found, this unbind item is KeyMap::UserExtraUnbind
// Such an item is not displayed to avoid confusion (what is
// unmatched removed?).
if (!newItem) {
- item_tag = KeyMap::UserExtraUnbind;
return 0;
}
}
newItem->setText(1, shortcut);
// record BindFile representation to recover KeySequence when needed.
newItem->setData(1, Qt::UserRole, toqstr(seq.print(KeySequence::BindFile)));
- setItemType(newItem, item_tag);
+ setItemType(newItem, tag);
return newItem;
}
if (items.isEmpty())
return;
- KeyMap::ItemType tag =
+ KeyMap::ItemType tag =
static_cast<KeyMap::ItemType>(items[0]->data(0, Qt::UserRole).toInt());
if (tag == KeyMap::UserUnbind)
removePB->setText(qt_("Res&tore"));
string shortcut = fromqstr(items[i]->data(1, Qt::UserRole).toString());
string lfun = fromqstr(items[i]->text(0));
FuncRequest func = lyxaction.lookupFunc(lfun);
- KeyMap::ItemType tag =
+ KeyMap::ItemType tag =
static_cast<KeyMap::ItemType>(items[i]->data(0, Qt::UserRole).toInt());
switch (tag) {
// show matched items
for (int i = 0; i < matched.size(); ++i) {
shortcutsTW->setItemHidden(matched[i], false);
- shortcutsTW->setItemExpanded(matched[i]->parent(), true);
+ shortcutsTW->setItemExpanded(matched[i]->parent(), true);
}
}
if (oldBinding == func)
// nothing has changed
return;
-
- // make sure this key isn't already bound---and, if so, not unbound
+
+ // make sure this key isn't already bound---and, if so, prompt user
FuncCode const unbind = user_unbind_.getBinding(k).action();
docstring const action_string = makeCmdString(oldBinding);
if (oldBinding.action() > LFUN_NOACTION && unbind == LFUN_UNKNOWN_ACTION
&& save_lfun_ != toqstr(action_string)) {
- // FIXME Perhaps we should offer to over-write the old shortcut?
- // If so, we'll need to remove it from our list, etc.
- Alert::error(_("Failed to create shortcut"),
- bformat(_("Shortcut `%1$s' is already bound to:\n%2$s\n"
- "You need to remove that binding before creating a new one."),
- k.print(KeySequence::ForGui), action_string));
- return;
+ docstring const new_action_string = makeCmdString(func);
+ docstring const text = bformat(_("Shortcut `%1$s' is already bound to "
+ "%2$s.\n"
+ "Are you sure you want to unbind the "
+ "current shortcut and bind it to %3$s?"),
+ k.print(KeySequence::ForGui), action_string,
+ new_action_string);
+ int ret = Alert::prompt(_("Redefine shortcut?"),
+ text, 0, 1, _("&Redefine"), _("&Cancel"));
+ if (ret != 0)
+ return;
+ QString const sequence_text = toqstr(k.print(KeySequence::ForGui));
+ QList<QTreeWidgetItem*> items = shortcutsTW->findItems(sequence_text,
+ Qt::MatchFlags(Qt::MatchExactly | Qt::MatchRecursive), 1);
+ if (items.size() > 0) {
+ // should always happen
+ bool expanded = items[0]->parent()->isExpanded();
+ shortcutsTW->setCurrentItem(items[0]);
+ removeShortcut();
+ shortcutsTW->setCurrentItem(0);
+ // make sure user doesn't see tree expansion if
+ // old binding wasn't in an expanded tree
+ if (!expanded)
+ items[0]->parent()->setExpanded(false);
+ }
}
+ shortcut_->accept();
+
if (!save_lfun_.isEmpty())
// real modification of the lfun's shortcut,
// so remove the previous one
/////////////////////////////////////////////////////////////////////
PrefIdentity::PrefIdentity(GuiPreferences * form)
- : PrefModule(QString(), qt_("Identity"), form)
+ : PrefModule(QString(), N_("Identity"), form)
{
setupUi(this);
this, SIGNAL(changed()));
connect(emailED, SIGNAL(textChanged(QString)),
this, SIGNAL(changed()));
+
+ nameED->setValidator(new NoNewLineValidator(nameED));
+ emailED->setValidator(new NoNewLineValidator(emailED));
}
-void PrefIdentity::apply(LyXRC & rc) const
+void PrefIdentity::applyRC(LyXRC & rc) const
{
rc.user_name = fromqstr(nameED->text());
rc.user_email = fromqstr(emailED->text());
}
-void PrefIdentity::update(LyXRC const & rc)
+void PrefIdentity::updateRC(LyXRC const & rc)
{
nameED->setText(toqstr(rc.user_name));
emailED->setText(toqstr(rc.user_email));
/////////////////////////////////////////////////////////////////////
GuiPreferences::GuiPreferences(GuiView & lv)
- : GuiDialog(lv, "prefs", qt_("Preferences")), update_screen_font_(false)
+ : GuiDialog(lv, "prefs", qt_("Preferences")), update_screen_font_(false),
+ update_previews_(false)
{
setupUi(this);
connect(restorePB, SIGNAL(clicked()), this, SLOT(slotRestore()));
addModule(new PrefUserInterface(this));
+ addModule(new PrefDocHandling(this));
addModule(new PrefEdit(this));
addModule(new PrefShortcuts(this));
PrefScreenFonts * screenfonts = new PrefScreenFonts(this);
addModule(new PrefSpellchecker(this));
//for strftime validator
- PrefOutput * output = new PrefOutput(this);
+ PrefOutput * output = new PrefOutput(this);
addModule(output);
- addModule(new PrefPrinter(this));
addModule(new PrefLatex(this));
PrefConverters * converters = new PrefConverters(this);
addModule(converters);
addModule(formats);
- prefsPS->setCurrentPanel(qt_("User Interface"));
+ prefsPS->setCurrentPanel("User Interface");
// FIXME: hack to work around resizing bug in Qt >= 4.2
// bug verified with Qt 4.2.{0-3} (JSpitzm)
#if QT_VERSION >= 0x040200
}
-void GuiPreferences::apply(LyXRC & rc) const
+void GuiPreferences::applyRC(LyXRC & rc) const
{
size_t end = modules_.size();
for (size_t i = 0; i != end; ++i)
- modules_[i]->apply(rc);
+ modules_[i]->applyRC(rc);
}
-void GuiPreferences::updateRc(LyXRC const & rc)
+void GuiPreferences::updateRC(LyXRC const & rc)
{
size_t const end = modules_.size();
for (size_t i = 0; i != end; ++i)
- modules_[i]->update(rc);
+ modules_[i]->updateRC(rc);
}
void GuiPreferences::applyView()
{
- apply(rc());
+ applyRC(rc());
}
movers_ = theMovers();
colors_.clear();
update_screen_font_ = false;
-
- updateRc(rc_);
- // Make sure that the bc is in the INITIAL state
- if (bc().policy().buttonStatus(ButtonPolicy::RESTORE))
- bc().restore();
+ update_previews_ = false;
+
+ updateRC(rc_);
+ // Make sure that the bc is in the INITIAL state
+ if (bc().policy().buttonStatus(ButtonPolicy::RESTORE))
+ bc().restore();
return true;
}
prefsApplied(rc_);
// FIXME: these need lfuns
// FIXME UNICODE
- Author const & author =
+ Author const & author =
Author(from_utf8(rc_.user_name), from_utf8(rc_.user_email));
theBufferList().recordCurrentAuthor(author);
if (update_screen_font_) {
dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
+ // resets flag in case second apply in same dialog
update_screen_font_ = false;
}
+ if (update_previews_) {
+ // resets flag in case second apply in same dialog
+ theBufferList().updatePreviews();
+ update_previews_ = false;
+ }
+
// The Save button has been pressed
if (isClosing())
dispatch(FuncRequest(LFUN_PREFERENCES_SAVE));
}
+void GuiPreferences::updatePreviews()
+{
+ update_previews_ = true;
+}
+
+
QString GuiPreferences::browsebind(QString const & file) const
{
return browseLibFile("bind", file, "bind", qt_("Choose bind file"),
}
-// We support less paper sizes than the document dialog
-// Therefore this adjustment is needed.
-PAPER_SIZE GuiPreferences::toPaperSize(int i) const
-{
- switch (i) {
- case 0:
- return PAPER_DEFAULT;
- case 1:
- return PAPER_USLETTER;
- case 2:
- return PAPER_USLEGAL;
- case 3:
- return PAPER_USEXECUTIVE;
- case 4:
- return PAPER_A3;
- case 5:
- return PAPER_A4;
- case 6:
- return PAPER_A5;
- case 7:
- return PAPER_B5;
- default:
- // should not happen
- return PAPER_DEFAULT;
- }
-}
-
-
-int GuiPreferences::fromPaperSize(PAPER_SIZE papersize) const
-{
- switch (papersize) {
- case PAPER_DEFAULT:
- return 0;
- case PAPER_USLETTER:
- return 1;
- case PAPER_USLEGAL:
- return 2;
- case PAPER_USEXECUTIVE:
- return 3;
- case PAPER_A3:
- return 4;
- case PAPER_A4:
- return 5;
- case PAPER_A5:
- return 6;
- case PAPER_B5:
- return 7;
- default:
- // should not happen
- return 0;
- }
-}
-
-
Dialog * createGuiPreferences(GuiView & lv) { return new GuiPreferences(lv); }