2006-03-05 17:24:44 +00:00
|
|
|
/**
|
2007-08-31 05:53:55 +00:00
|
|
|
* \file GuiDocument.cpp
|
2006-03-05 17:24:44 +00:00
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
* Licence details can be found in the file COPYING.
|
|
|
|
*
|
|
|
|
* \author Edwin Leuven
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
* \author Richard Heck (modules)
|
2006-03-05 17:24:44 +00:00
|
|
|
*
|
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
|
2007-08-31 05:53:55 +00:00
|
|
|
#include "GuiDocument.h"
|
2006-03-05 17:24:44 +00:00
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
#include "BranchList.h"
|
|
|
|
#include "buffer_funcs.h"
|
|
|
|
#include "Buffer.h"
|
|
|
|
#include "BufferParams.h"
|
|
|
|
#include "BufferView.h"
|
2007-11-02 23:42:27 +00:00
|
|
|
#include "Color.h"
|
2007-10-30 02:59:24 +00:00
|
|
|
#include "EmbeddedFiles.h"
|
2007-10-06 22:43:21 +00:00
|
|
|
#include "Encoding.h"
|
2006-08-25 13:40:01 +00:00
|
|
|
#include "FloatPlacement.h"
|
2007-10-06 22:43:21 +00:00
|
|
|
#include "FuncRequest.h"
|
2007-11-29 07:04:28 +00:00
|
|
|
#include "support/gettext.h"
|
2007-10-06 22:43:21 +00:00
|
|
|
#include "GuiBranches.h"
|
|
|
|
#include "Language.h"
|
|
|
|
#include "LaTeXFeatures.h"
|
|
|
|
#include "LaTeXHighlighter.h"
|
2007-09-29 20:02:32 +00:00
|
|
|
#include "Layout.h"
|
2007-04-26 03:53:02 +00:00
|
|
|
#include "LengthCombo.h"
|
2007-10-06 22:43:21 +00:00
|
|
|
#include "LyXRC.h" // defaultUnit
|
|
|
|
#include "ModuleList.h"
|
|
|
|
#include "OutputParams.h"
|
2007-04-26 03:53:02 +00:00
|
|
|
#include "PanelStack.h"
|
2007-10-06 22:43:21 +00:00
|
|
|
#include "PDFOptions.h"
|
2007-05-14 12:09:14 +00:00
|
|
|
#include "qt_helpers.h"
|
2007-10-06 22:43:21 +00:00
|
|
|
#include "Spacing.h"
|
|
|
|
#include "TextClassList.h"
|
2007-05-14 12:09:14 +00:00
|
|
|
#include "Validator.h"
|
|
|
|
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
#include "insets/InsetListingsParams.h"
|
2006-03-05 17:24:44 +00:00
|
|
|
|
2007-12-05 09:23:19 +00:00
|
|
|
#include "support/FileName.h"
|
|
|
|
#include "support/filetools.h"
|
2006-03-05 17:24:44 +00:00
|
|
|
#include "support/lstrings.h"
|
|
|
|
|
2007-09-11 22:31:24 +00:00
|
|
|
#include <boost/bind.hpp>
|
|
|
|
|
2007-05-14 12:09:14 +00:00
|
|
|
#include <QCloseEvent>
|
2007-05-14 14:23:55 +00:00
|
|
|
#include <QScrollBar>
|
2007-05-14 12:09:14 +00:00
|
|
|
#include <QTextCursor>
|
2006-03-05 17:24:44 +00:00
|
|
|
|
2007-09-03 05:59:32 +00:00
|
|
|
#include <algorithm>
|
2007-10-06 22:43:21 +00:00
|
|
|
#include <sstream>
|
2006-03-05 17:24:44 +00:00
|
|
|
|
2007-12-12 10:16:00 +00:00
|
|
|
using namespace std;
|
2007-12-12 19:57:42 +00:00
|
|
|
using namespace lyx::support;
|
2007-04-24 19:37:34 +00:00
|
|
|
|
2007-09-11 22:31:24 +00:00
|
|
|
///
|
|
|
|
template<class Pair>
|
2007-12-12 19:28:07 +00:00
|
|
|
vector<typename Pair::second_type> const
|
|
|
|
getSecond(vector<Pair> const & pr)
|
2007-09-11 22:31:24 +00:00
|
|
|
{
|
2007-12-12 19:28:07 +00:00
|
|
|
vector<typename Pair::second_type> tmp(pr.size());
|
|
|
|
transform(pr.begin(), pr.end(), tmp.begin(),
|
2007-09-11 22:31:24 +00:00
|
|
|
boost::bind(&Pair::second, _1));
|
|
|
|
return tmp;
|
|
|
|
}
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
char const * const tex_graphics[] =
|
|
|
|
{
|
|
|
|
"default", "dvips", "dvitops", "emtex",
|
|
|
|
"ln", "oztex", "textures", "none", ""
|
2007-04-30 21:01:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
char const * const tex_graphics_gui[] =
|
|
|
|
{
|
|
|
|
N_("Default"), "Dvips", "DVItoPS", "EmTeX",
|
|
|
|
"LN", "OzTeX", "Textures", N_("None"), ""
|
2007-06-01 17:44:04 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
char const * const tex_fonts_roman[] =
|
|
|
|
{
|
|
|
|
"default", "cmr", "lmodern", "ae", "times", "palatino",
|
|
|
|
"charter", "newcent", "bookman", "utopia", "beraserif",
|
|
|
|
"ccfonts", "chancery", ""
|
2007-04-30 21:01:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
char const * tex_fonts_roman_gui[] =
|
|
|
|
{
|
|
|
|
N_("Default"), N_("Computer Modern Roman"), N_("Latin Modern Roman"),
|
|
|
|
N_("AE (Almost European)"), N_("Times Roman"), N_("Palatino"),
|
|
|
|
N_("Bitstream Charter"), N_("New Century Schoolbook"), N_("Bookman"),
|
|
|
|
N_("Utopia"), N_("Bera Serif"), N_("Concrete Roman"), N_("Zapf Chancery"),
|
|
|
|
""
|
2007-04-30 21:01:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
char const * const tex_fonts_sans[] =
|
|
|
|
{
|
|
|
|
"default", "cmss", "lmss", "helvet", "avant", "berasans", "cmbr", ""
|
2007-04-30 21:01:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
char const * tex_fonts_sans_gui[] =
|
|
|
|
{
|
|
|
|
N_("Default"), N_("Computer Modern Sans"), N_("Latin Modern Sans"),
|
|
|
|
N_("Helvetica"), N_("Avant Garde"), N_("Bera Sans"), N_("CM Bright"), ""
|
2007-04-30 21:01:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
char const * const tex_fonts_monospaced[] =
|
|
|
|
{
|
|
|
|
"default", "cmtt", "lmtt", "courier", "beramono", "luximono", "cmtl", ""
|
2007-04-30 21:01:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
char const * tex_fonts_monospaced_gui[] =
|
|
|
|
{
|
|
|
|
N_("Default"), N_("Computer Modern Typewriter"),
|
|
|
|
N_("Latin Modern Typewriter"), N_("Courier"), N_("Bera Mono"),
|
|
|
|
N_("LuxiMono"), N_("CM Typewriter Light"), ""
|
2007-04-30 21:01:24 +00:00
|
|
|
};
|
|
|
|
|
2007-06-01 17:44:04 +00:00
|
|
|
|
|
|
|
vector<pair<string, lyx::docstring> > pagestyles;
|
|
|
|
|
|
|
|
|
2007-04-25 10:25:37 +00:00
|
|
|
namespace lyx {
|
|
|
|
namespace frontend {
|
|
|
|
|
2007-05-14 12:09:14 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// PreambleModule
|
|
|
|
//
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
PreambleModule::PreambleModule(): current_id_(0)
|
|
|
|
{
|
|
|
|
// This is not a memory leak. The object will be destroyed
|
|
|
|
// with this.
|
|
|
|
(void) new LaTeXHighlighter(preambleTE->document());
|
|
|
|
setFocusProxy(preambleTE);
|
2007-05-14 16:54:27 +00:00
|
|
|
connect(preambleTE, SIGNAL(textChanged()), this, SIGNAL(changed()));
|
2007-05-14 12:09:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-05-14 16:41:50 +00:00
|
|
|
void PreambleModule::update(BufferParams const & params, BufferId id)
|
2007-05-14 12:09:14 +00:00
|
|
|
{
|
|
|
|
QString preamble = toqstr(params.preamble);
|
|
|
|
// Nothing to do if the params and preamble are unchanged.
|
2007-05-28 22:27:45 +00:00
|
|
|
if (id == current_id_
|
2007-05-14 12:09:14 +00:00
|
|
|
&& preamble == preambleTE->document()->toPlainText())
|
|
|
|
return;
|
|
|
|
|
|
|
|
QTextCursor cur = preambleTE->textCursor();
|
|
|
|
// Save the coords before switching to the new one.
|
2007-05-28 22:27:45 +00:00
|
|
|
preamble_coords_[current_id_] =
|
2007-05-14 12:09:14 +00:00
|
|
|
make_pair(cur.position(), preambleTE->verticalScrollBar()->value());
|
|
|
|
|
|
|
|
// Save the params address for further use.
|
|
|
|
current_id_ = id;
|
|
|
|
preambleTE->document()->setPlainText(preamble);
|
|
|
|
Coords::const_iterator it = preamble_coords_.find(current_id_);
|
|
|
|
if (it == preamble_coords_.end())
|
|
|
|
// First time we open this one.
|
|
|
|
preamble_coords_[current_id_] = make_pair(0,0);
|
|
|
|
else {
|
|
|
|
// Restore saved coords.
|
|
|
|
QTextCursor cur = preambleTE->textCursor();
|
|
|
|
cur.setPosition(it->second.first);
|
|
|
|
preambleTE->setTextCursor(cur);
|
|
|
|
preambleTE->verticalScrollBar()->setValue(it->second.second);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PreambleModule::apply(BufferParams & params)
|
|
|
|
{
|
|
|
|
params.preamble = fromqstr(preambleTE->document()->toPlainText());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PreambleModule::closeEvent(QCloseEvent * e)
|
|
|
|
{
|
|
|
|
// Save the coords before closing.
|
|
|
|
QTextCursor cur = preambleTE->textCursor();
|
2007-05-28 22:27:45 +00:00
|
|
|
preamble_coords_[current_id_] =
|
2007-05-14 12:09:14 +00:00
|
|
|
make_pair(cur.position(), preambleTE->verticalScrollBar()->value());
|
|
|
|
e->accept();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-04-24 19:37:34 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// DocumentDialog
|
|
|
|
//
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
2007-09-03 05:59:32 +00:00
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
|
2007-11-23 09:44:02 +00:00
|
|
|
GuiDocument::GuiDocument(GuiView & lv)
|
2007-10-09 19:34:27 +00:00
|
|
|
: GuiDialog(lv, "document")
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
setupUi(this);
|
2007-09-05 20:33:29 +00:00
|
|
|
setViewTitle(_("Document Settings"));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
lang_ = getSecond(getLanguageData(false));
|
|
|
|
|
|
|
|
connect(okPB, SIGNAL(clicked()), this, SLOT(slotOK()));
|
|
|
|
connect(applyPB, SIGNAL(clicked()), this, SLOT(slotApply()));
|
|
|
|
connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
|
|
|
|
connect(restorePB, SIGNAL(clicked()), this, SLOT(slotRestore()));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(savePB, SIGNAL(clicked()), this, SLOT(saveDefaultClicked()));
|
|
|
|
connect(defaultPB, SIGNAL(clicked()), this, SLOT(useDefaultsClicked()));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
// Manage the restore, ok, apply, restore and cancel/close buttons
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
|
|
|
|
bc().setOK(okPB);
|
|
|
|
bc().setApply(applyPB);
|
|
|
|
bc().setCancel(closePB);
|
|
|
|
bc().setRestore(restorePB);
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
textLayoutModule = new UiWidget<Ui::TextLayoutUi>;
|
|
|
|
// text layout
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(textLayoutModule->lspacingCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(textLayoutModule->lspacingCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(setLSpacing(int)));
|
|
|
|
connect(textLayoutModule->lspacingLE, SIGNAL(textChanged(const QString&)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(textLayoutModule->skipRB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(textLayoutModule->indentRB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(textLayoutModule->skipCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(textLayoutModule->skipLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(textLayoutModule->skipLengthCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(textLayoutModule->skipCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(setSkip(int)));
|
|
|
|
connect(textLayoutModule->skipRB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(enableSkip(bool)));
|
|
|
|
connect(textLayoutModule->twoColumnCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
connect(textLayoutModule->listingsED, SIGNAL(textChanged()),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-06-12 17:10:28 +00:00
|
|
|
connect(textLayoutModule->bypassCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-06-26 08:00:44 +00:00
|
|
|
connect(textLayoutModule->bypassCB, SIGNAL(clicked()),
|
2007-07-27 18:17:00 +00:00
|
|
|
this, SLOT(set_listings_msg()));
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
connect(textLayoutModule->listingsED, SIGNAL(textChanged()),
|
2007-07-27 18:17:00 +00:00
|
|
|
this, SLOT(set_listings_msg()));
|
2007-05-20 14:31:15 +00:00
|
|
|
textLayoutModule->listingsTB->setPlainText(
|
|
|
|
qt_("Input listings parameters on the right. Enter ? for a list of parameters."));
|
2007-04-24 19:37:34 +00:00
|
|
|
textLayoutModule->lspacingLE->setValidator(new QDoubleValidator(
|
|
|
|
textLayoutModule->lspacingLE));
|
|
|
|
textLayoutModule->skipLE->setValidator(unsignedLengthValidator(
|
|
|
|
textLayoutModule->skipLE));
|
|
|
|
|
|
|
|
textLayoutModule->skipCO->addItem(qt_("SmallSkip"));
|
|
|
|
textLayoutModule->skipCO->addItem(qt_("MedSkip"));
|
|
|
|
textLayoutModule->skipCO->addItem(qt_("BigSkip"));
|
|
|
|
textLayoutModule->skipCO->addItem(qt_("Length"));
|
|
|
|
// remove the %-items from the unit choice
|
|
|
|
textLayoutModule->skipLengthCO->noPercents();
|
|
|
|
textLayoutModule->lspacingCO->insertItem(
|
|
|
|
Spacing::Single, qt_("Single"));
|
|
|
|
textLayoutModule->lspacingCO->insertItem(
|
|
|
|
Spacing::Onehalf, qt_("OneHalf"));
|
|
|
|
textLayoutModule->lspacingCO->insertItem(
|
|
|
|
Spacing::Double, qt_("Double"));
|
|
|
|
textLayoutModule->lspacingCO->insertItem(
|
|
|
|
Spacing::Other, qt_("Custom"));
|
|
|
|
|
|
|
|
// initialize the length validator
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(textLayoutModule->skipLE);
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
fontModule = new UiWidget<Ui::FontUi>;
|
|
|
|
// fonts
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(fontModule->fontsRomanCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(fontModule->fontsRomanCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(romanChanged(int)));
|
|
|
|
connect(fontModule->fontsSansCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(fontModule->fontsSansCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(sansChanged(int)));
|
|
|
|
connect(fontModule->fontsTypewriterCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(fontModule->fontsTypewriterCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(ttChanged(int)));
|
|
|
|
connect(fontModule->fontsDefaultCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(fontModule->fontsizeCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(fontModule->scaleSansSB, SIGNAL(valueChanged(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(fontModule->scaleTypewriterSB, SIGNAL(valueChanged(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(fontModule->fontScCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(fontModule->fontOsfCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
for (int n = 0; tex_fonts_roman[n][0]; ++n) {
|
2007-06-01 12:27:04 +00:00
|
|
|
QString font = qt_(tex_fonts_roman_gui[n]);
|
2007-10-06 22:43:21 +00:00
|
|
|
if (!isFontAvailable(tex_fonts_roman[n]))
|
2007-04-24 19:37:34 +00:00
|
|
|
font += qt_(" (not installed)");
|
|
|
|
fontModule->fontsRomanCO->addItem(font);
|
|
|
|
}
|
|
|
|
for (int n = 0; tex_fonts_sans[n][0]; ++n) {
|
2007-06-01 12:27:04 +00:00
|
|
|
QString font = qt_(tex_fonts_sans_gui[n]);
|
2007-10-06 22:43:21 +00:00
|
|
|
if (!isFontAvailable(tex_fonts_sans[n]))
|
2007-04-24 19:37:34 +00:00
|
|
|
font += qt_(" (not installed)");
|
|
|
|
fontModule->fontsSansCO->addItem(font);
|
|
|
|
}
|
|
|
|
for (int n = 0; tex_fonts_monospaced[n][0]; ++n) {
|
2007-06-01 12:27:04 +00:00
|
|
|
QString font = qt_(tex_fonts_monospaced_gui[n]);
|
2007-10-06 22:43:21 +00:00
|
|
|
if (!isFontAvailable(tex_fonts_monospaced[n]))
|
2007-04-24 19:37:34 +00:00
|
|
|
font += qt_(" (not installed)");
|
|
|
|
fontModule->fontsTypewriterCO->addItem(font);
|
|
|
|
}
|
|
|
|
|
2007-06-01 17:44:04 +00:00
|
|
|
fontModule->fontsizeCO->addItem(qt_("Default"));
|
2007-04-24 19:37:34 +00:00
|
|
|
fontModule->fontsizeCO->addItem(qt_("10"));
|
|
|
|
fontModule->fontsizeCO->addItem(qt_("11"));
|
|
|
|
fontModule->fontsizeCO->addItem(qt_("12"));
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
for (int n = 0; GuiDocument::fontfamilies_gui[n][0]; ++n)
|
2007-04-24 19:37:34 +00:00
|
|
|
fontModule->fontsDefaultCO->addItem(
|
2007-10-06 22:43:21 +00:00
|
|
|
qt_(GuiDocument::fontfamilies_gui[n]));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
pageLayoutModule = new UiWidget<Ui::PageLayoutUi>;
|
|
|
|
// page layout
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(pageLayoutModule->papersizeCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(setCustomPapersize(int)));
|
|
|
|
connect(pageLayoutModule->papersizeCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(setCustomPapersize(int)));
|
|
|
|
connect(pageLayoutModule->portraitRB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(portraitChanged()));
|
|
|
|
connect(pageLayoutModule->papersizeCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pageLayoutModule->paperheightLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pageLayoutModule->paperwidthLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pageLayoutModule->paperwidthUnitCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pageLayoutModule->paperheightUnitCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pageLayoutModule->portraitRB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pageLayoutModule->landscapeRB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pageLayoutModule->facingPagesCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pageLayoutModule->pagestyleCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
|
2007-06-01 17:44:04 +00:00
|
|
|
pageLayoutModule->pagestyleCO->addItem(qt_("Default"));
|
2007-04-24 19:37:34 +00:00
|
|
|
pageLayoutModule->pagestyleCO->addItem(qt_("empty"));
|
|
|
|
pageLayoutModule->pagestyleCO->addItem(qt_("plain"));
|
|
|
|
pageLayoutModule->pagestyleCO->addItem(qt_("headings"));
|
|
|
|
pageLayoutModule->pagestyleCO->addItem(qt_("fancy"));
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(pageLayoutModule->paperheightLE,
|
2007-04-24 19:37:34 +00:00
|
|
|
pageLayoutModule->paperheightL);
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(pageLayoutModule->paperwidthLE,
|
2007-04-24 19:37:34 +00:00
|
|
|
pageLayoutModule->paperwidthL);
|
|
|
|
|
|
|
|
// paper
|
|
|
|
QComboBox * cb = pageLayoutModule->papersizeCO;
|
|
|
|
cb->addItem(qt_("Default"));
|
|
|
|
cb->addItem(qt_("Custom"));
|
|
|
|
cb->addItem(qt_("US letter"));
|
|
|
|
cb->addItem(qt_("US legal"));
|
|
|
|
cb->addItem(qt_("US executive"));
|
|
|
|
cb->addItem(qt_("A3"));
|
|
|
|
cb->addItem(qt_("A4"));
|
|
|
|
cb->addItem(qt_("A5"));
|
|
|
|
cb->addItem(qt_("B3"));
|
|
|
|
cb->addItem(qt_("B4"));
|
|
|
|
cb->addItem(qt_("B5"));
|
|
|
|
// remove the %-items from the unit choice
|
|
|
|
pageLayoutModule->paperwidthUnitCO->noPercents();
|
|
|
|
pageLayoutModule->paperheightUnitCO->noPercents();
|
|
|
|
pageLayoutModule->paperheightLE->setValidator(unsignedLengthValidator(
|
|
|
|
pageLayoutModule->paperheightLE));
|
|
|
|
pageLayoutModule->paperwidthLE->setValidator(unsignedLengthValidator(
|
|
|
|
pageLayoutModule->paperwidthLE));
|
|
|
|
|
|
|
|
|
|
|
|
marginsModule = new UiWidget<Ui::MarginsUi>;
|
|
|
|
// margins
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(marginsModule->marginCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(setCustomMargins(bool)));
|
|
|
|
connect(marginsModule->marginCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->topLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->topUnit, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->bottomLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->bottomUnit, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->innerLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->innerUnit, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->outerLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->outerUnit, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->headheightLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->headheightUnit, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->headsepLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->headsepUnit, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->footskipLE, SIGNAL(textChanged(const QString&)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(marginsModule->footskipUnit, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-04-24 19:37:34 +00:00
|
|
|
marginsModule->topLE->setValidator(unsignedLengthValidator(
|
|
|
|
marginsModule->topLE));
|
|
|
|
marginsModule->bottomLE->setValidator(unsignedLengthValidator(
|
|
|
|
marginsModule->bottomLE));
|
|
|
|
marginsModule->innerLE->setValidator(unsignedLengthValidator(
|
|
|
|
marginsModule->innerLE));
|
|
|
|
marginsModule->outerLE->setValidator(unsignedLengthValidator(
|
|
|
|
marginsModule->outerLE));
|
|
|
|
marginsModule->headsepLE->setValidator(unsignedLengthValidator(
|
|
|
|
marginsModule->headsepLE));
|
|
|
|
marginsModule->headheightLE->setValidator(unsignedLengthValidator(
|
|
|
|
marginsModule->headheightLE));
|
|
|
|
marginsModule->footskipLE->setValidator(unsignedLengthValidator(
|
|
|
|
marginsModule->footskipLE));
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(marginsModule->topLE,
|
2007-04-24 19:37:34 +00:00
|
|
|
marginsModule->topL);
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(marginsModule->bottomLE,
|
2007-04-24 19:37:34 +00:00
|
|
|
marginsModule->bottomL);
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(marginsModule->innerLE,
|
2007-04-24 19:37:34 +00:00
|
|
|
marginsModule->innerL);
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(marginsModule->outerLE,
|
2007-04-24 19:37:34 +00:00
|
|
|
marginsModule->outerL);
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(marginsModule->headsepLE,
|
2007-04-24 19:37:34 +00:00
|
|
|
marginsModule->headsepL);
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(marginsModule->headheightLE,
|
2007-04-24 19:37:34 +00:00
|
|
|
marginsModule->headheightL);
|
2007-09-05 20:33:29 +00:00
|
|
|
bc().addCheckedLineEdit(marginsModule->footskipLE,
|
2007-04-24 19:37:34 +00:00
|
|
|
marginsModule->footskipL);
|
|
|
|
|
|
|
|
|
|
|
|
langModule = new UiWidget<Ui::LanguageUi>;
|
|
|
|
// language & quote
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(langModule->languageCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-09-19 12:29:08 +00:00
|
|
|
connect(langModule->defaultencodingRB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(langModule->otherencodingRB, SIGNAL(clicked()),
|
2007-04-25 10:25:37 +00:00
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(langModule->encodingCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(langModule->quoteStyleCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-04-24 19:37:34 +00:00
|
|
|
// language & quotes
|
|
|
|
vector<LanguagePair> const langs = getLanguageData(false);
|
|
|
|
vector<LanguagePair>::const_iterator lit = langs.begin();
|
|
|
|
vector<LanguagePair>::const_iterator lend = langs.end();
|
|
|
|
for (; lit != lend; ++lit) {
|
2007-09-05 20:33:29 +00:00
|
|
|
langModule->languageCO->addItem(toqstr(lit->first));
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Always put the default encoding in the first position.
|
|
|
|
// It is special because the displayed text is translated.
|
|
|
|
langModule->encodingCO->addItem(qt_("LaTeX default"));
|
|
|
|
Encodings::const_iterator it = encodings.begin();
|
|
|
|
Encodings::const_iterator const end = encodings.end();
|
|
|
|
for (; it != end; ++it)
|
|
|
|
langModule->encodingCO->addItem(toqstr(it->latexName()));
|
|
|
|
|
|
|
|
langModule->quoteStyleCO->addItem(qt_("``text''"));
|
|
|
|
langModule->quoteStyleCO->addItem(qt_("''text''"));
|
|
|
|
langModule->quoteStyleCO->addItem(qt_(",,text``"));
|
|
|
|
langModule->quoteStyleCO->addItem(qt_(",,text''"));
|
|
|
|
langModule->quoteStyleCO->addItem(qt_("<<text>>"));
|
|
|
|
langModule->quoteStyleCO->addItem(qt_(">>text<<"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
numberingModule = new UiWidget<Ui::NumberingUi>;
|
|
|
|
// numbering
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(numberingModule->depthSL, SIGNAL(valueChanged(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(numberingModule->tocSL, SIGNAL(valueChanged(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(numberingModule->depthSL, SIGNAL(valueChanged(int)),
|
|
|
|
this, SLOT(updateNumbering()));
|
|
|
|
connect(numberingModule->tocSL, SIGNAL(valueChanged(int)),
|
|
|
|
this, SLOT(updateNumbering()));
|
2007-04-24 19:37:34 +00:00
|
|
|
numberingModule->tocTW->setColumnCount(3);
|
|
|
|
numberingModule->tocTW->headerItem()->setText(0, qt_("Example"));
|
|
|
|
numberingModule->tocTW->headerItem()->setText(1, qt_("Numbered"));
|
|
|
|
numberingModule->tocTW->headerItem()->setText(2, qt_("Appears in TOC"));
|
|
|
|
|
|
|
|
|
|
|
|
biblioModule = new UiWidget<Ui::BiblioUi>;
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(biblioModule->citeNatbibRB, SIGNAL(toggled(bool)),
|
|
|
|
biblioModule->citationStyleL, SLOT(setEnabled(bool)));
|
|
|
|
connect(biblioModule->citeNatbibRB, SIGNAL(toggled(bool)),
|
|
|
|
biblioModule->citeStyleCO, SLOT(setEnabled(bool)));
|
2007-04-24 19:37:34 +00:00
|
|
|
// biblio
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(biblioModule->citeDefaultRB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(biblioModule->citeNatbibRB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(biblioModule->citeStyleCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(biblioModule->citeJurabibRB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(biblioModule->bibtopicCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-04-24 19:37:34 +00:00
|
|
|
// biblio
|
|
|
|
biblioModule->citeStyleCO->addItem(qt_("Author-year"));
|
|
|
|
biblioModule->citeStyleCO->addItem(qt_("Numerical"));
|
|
|
|
biblioModule->citeStyleCO->setCurrentIndex(0);
|
|
|
|
|
|
|
|
|
|
|
|
mathsModule = new UiWidget<Ui::MathsUi>;
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(mathsModule->amsautoCB, SIGNAL(toggled(bool)),
|
|
|
|
mathsModule->amsCB, SLOT(setDisabled(bool)));
|
|
|
|
connect(mathsModule->esintautoCB, SIGNAL(toggled(bool)),
|
|
|
|
mathsModule->esintCB, SLOT(setDisabled(bool)));
|
2007-04-24 19:37:34 +00:00
|
|
|
// maths
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(mathsModule->amsCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(mathsModule->amsautoCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(mathsModule->esintCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(mathsModule->esintautoCB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
latexModule = new UiWidget<Ui::LaTeXUi>;
|
|
|
|
// latex class
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(latexModule->classCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(latexModule->optionsLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(latexModule->psdriverCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(latexModule->classCO, SIGNAL(activated(int)),
|
|
|
|
this, SLOT(classChanged()));
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
|
|
|
|
selectionManager =
|
|
|
|
new GuiSelectionManager(latexModule->availableLV, latexModule->selectedLV,
|
|
|
|
latexModule->addPB, latexModule->deletePB,
|
|
|
|
latexModule->upPB, latexModule->downPB,
|
|
|
|
availableModel(), selectedModel());
|
|
|
|
connect(selectionManager, SIGNAL(updateHook()),
|
|
|
|
this, SLOT(updateModuleInfo()));
|
|
|
|
connect(selectionManager, SIGNAL(updateHook()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
|
|
|
|
// postscript drivers
|
2007-04-24 19:37:34 +00:00
|
|
|
for (int n = 0; tex_graphics[n][0]; ++n) {
|
2007-06-01 17:44:04 +00:00
|
|
|
QString enc = qt_(tex_graphics_gui[n]);
|
2007-04-24 19:37:34 +00:00
|
|
|
latexModule->psdriverCO->addItem(enc);
|
|
|
|
}
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
// latex classes
|
|
|
|
//FIXME This seems too involved with the kernel. Some of this
|
2007-10-06 22:43:21 +00:00
|
|
|
//should be moved to the kernel---which should perhaps just
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
//give us a list of entries or something of the sort.
|
2007-04-29 19:53:54 +00:00
|
|
|
for (TextClassList::const_iterator cit = textclasslist.begin();
|
2007-04-24 19:37:34 +00:00
|
|
|
cit != textclasslist.end(); ++cit) {
|
|
|
|
if (cit->isTeXClassAvailable()) {
|
|
|
|
latexModule->classCO->addItem(toqstr(cit->description()));
|
|
|
|
} else {
|
|
|
|
docstring item =
|
2007-04-25 16:39:21 +00:00
|
|
|
bformat(_("Unavailable: %1$s"), from_utf8(cit->description()));
|
2007-04-24 19:37:34 +00:00
|
|
|
latexModule->classCO->addItem(toqstr(item));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// branches
|
2007-08-31 05:53:55 +00:00
|
|
|
branchesModule = new GuiBranches;
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(branchesModule, SIGNAL(changed()),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
// preamble
|
2007-05-14 12:09:14 +00:00
|
|
|
preambleModule = new PreambleModule;
|
|
|
|
connect(preambleModule, SIGNAL(changed()),
|
2007-04-24 19:37:34 +00:00
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
|
|
|
|
// bullets
|
|
|
|
bulletsModule = new BulletsModule;
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(bulletsModule, SIGNAL(changed()),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
2007-10-29 04:07:38 +00:00
|
|
|
// embedded files
|
|
|
|
embeddedFilesModule = new UiWidget<Ui::EmbeddedFilesUi>;
|
|
|
|
connect(embeddedFilesModule->bundleCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(embeddedFilesModule->addPB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(embeddedFilesModule->removePB, SIGNAL(clicked()),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
|
2007-09-20 22:31:18 +00:00
|
|
|
// PDF support
|
|
|
|
pdfSupportModule = new UiWidget<Ui::PDFSupportUi>;
|
|
|
|
|
2007-09-22 22:20:15 +00:00
|
|
|
connect(pdfSupportModule->use_hyperrefGB, SIGNAL(toggled(bool)),
|
2007-09-20 22:31:18 +00:00
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->titleLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->authorLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->subjectLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->keywordsLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->bookmarksGB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->bookmarksnumberedCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->bookmarksopenGB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-09-22 22:20:15 +00:00
|
|
|
connect(pdfSupportModule->bookmarksopenlevelSB, SIGNAL(valueChanged(int)),
|
2007-09-20 22:31:18 +00:00
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->breaklinksCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->pdfborderCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->colorlinksCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->backrefCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-10-10 00:34:23 +00:00
|
|
|
connect(pdfSupportModule->pdfusetitleCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-09-20 22:31:18 +00:00
|
|
|
connect(pdfSupportModule->pagebackrefCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->fullscreenCB, SIGNAL(toggled(bool)),
|
|
|
|
this, SLOT(change_adaptor()));
|
|
|
|
connect(pdfSupportModule->optionsLE, SIGNAL(textChanged(const QString &)),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
// float
|
|
|
|
floatModule = new FloatPlacement;
|
2007-04-25 10:25:37 +00:00
|
|
|
connect(floatModule, SIGNAL(changed()),
|
|
|
|
this, SLOT(change_adaptor()));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
docPS->addPanel(latexModule, _("Document Class"));
|
|
|
|
docPS->addPanel(fontModule, _("Fonts"));
|
|
|
|
docPS->addPanel(textLayoutModule, _("Text Layout"));
|
|
|
|
docPS->addPanel(pageLayoutModule, _("Page Layout"));
|
|
|
|
docPS->addPanel(marginsModule, _("Page Margins"));
|
|
|
|
docPS->addPanel(langModule, _("Language"));
|
|
|
|
docPS->addPanel(numberingModule, _("Numbering & TOC"));
|
|
|
|
docPS->addPanel(biblioModule, _("Bibliography"));
|
2007-09-20 22:31:18 +00:00
|
|
|
docPS->addPanel(pdfSupportModule, _("PDF Properties"));
|
2007-04-24 19:37:34 +00:00
|
|
|
docPS->addPanel(mathsModule, _("Math Options"));
|
|
|
|
docPS->addPanel(floatModule, _("Float Placement"));
|
|
|
|
docPS->addPanel(bulletsModule, _("Bullets"));
|
|
|
|
docPS->addPanel(branchesModule, _("Branches"));
|
2007-10-29 04:07:38 +00:00
|
|
|
docPS->addPanel(embeddedFilesModule, _("Embedded Files"));
|
2007-04-24 19:37:34 +00:00
|
|
|
docPS->addPanel(preambleModule, _("LaTeX Preamble"));
|
|
|
|
docPS->setCurrentPanel(_("Document Class"));
|
|
|
|
// FIXME: hack to work around resizing bug in Qt >= 4.2
|
|
|
|
// bug verified with Qt 4.2.{0-3} (JSpitzm)
|
|
|
|
#if QT_VERSION >= 0x040200
|
|
|
|
docPS->updateGeometry();
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::showPreamble()
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
docPS->setCurrentPanel(_("LaTeX Preamble"));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::saveDefaultClicked()
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
2007-09-05 20:33:29 +00:00
|
|
|
saveDocDefault();
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::useDefaultsClicked()
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
2007-09-05 20:33:29 +00:00
|
|
|
useClassDefaults();
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::change_adaptor()
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
2007-09-05 20:33:29 +00:00
|
|
|
changed();
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
docstring GuiDocument::validate_listings_params()
|
2007-07-27 18:17:00 +00:00
|
|
|
{
|
|
|
|
// use a cache here to avoid repeated validation
|
|
|
|
// of the same parameters
|
|
|
|
static string param_cache = string();
|
|
|
|
static docstring msg_cache = docstring();
|
|
|
|
|
|
|
|
if (textLayoutModule->bypassCB->isChecked())
|
|
|
|
return docstring();
|
|
|
|
|
|
|
|
string params = fromqstr(textLayoutModule->listingsED->toPlainText());
|
|
|
|
if (params != param_cache) {
|
|
|
|
param_cache = params;
|
|
|
|
msg_cache = InsetListingsParams(params).validate();
|
|
|
|
}
|
|
|
|
return msg_cache;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::set_listings_msg()
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
{
|
|
|
|
static bool isOK = true;
|
2007-07-27 18:17:00 +00:00
|
|
|
docstring msg = validate_listings_params();
|
2007-06-12 17:10:28 +00:00
|
|
|
if (msg.empty()) {
|
|
|
|
if (isOK)
|
|
|
|
return;
|
|
|
|
isOK = true;
|
|
|
|
// listingsTB->setTextColor("black");
|
|
|
|
textLayoutModule->listingsTB->setPlainText(
|
|
|
|
qt_("Input listings parameters on the right. Enter ? for a list of parameters."));
|
|
|
|
} else {
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
isOK = false;
|
|
|
|
// listingsTB->setTextColor("red");
|
2007-06-12 17:10:28 +00:00
|
|
|
textLayoutModule->listingsTB->setPlainText(toqstr(msg));
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::closeEvent(QCloseEvent * e)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
2007-09-11 17:06:15 +00:00
|
|
|
slotClose();
|
2007-04-24 19:37:34 +00:00
|
|
|
e->accept();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::setLSpacing(int item)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
textLayoutModule->lspacingLE->setEnabled(item == 3);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::setSkip(int item)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
bool const enable = (item == 3);
|
|
|
|
textLayoutModule->skipLE->setEnabled(enable);
|
|
|
|
textLayoutModule->skipLengthCO->setEnabled(enable);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::enableSkip(bool skip)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
textLayoutModule->skipCO->setEnabled(skip);
|
|
|
|
textLayoutModule->skipLE->setEnabled(skip);
|
|
|
|
textLayoutModule->skipLengthCO->setEnabled(skip);
|
|
|
|
if (skip)
|
|
|
|
setSkip(textLayoutModule->skipCO->currentIndex());
|
|
|
|
}
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::portraitChanged()
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
setMargins(pageLayoutModule->papersizeCO->currentIndex());
|
|
|
|
}
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::setMargins(bool custom)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
marginsModule->marginCB->setChecked(custom);
|
|
|
|
setCustomMargins(custom);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::setCustomPapersize(int papersize)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
bool const custom = (papersize == 1);
|
|
|
|
|
|
|
|
pageLayoutModule->paperwidthL->setEnabled(custom);
|
|
|
|
pageLayoutModule->paperwidthLE->setEnabled(custom);
|
|
|
|
pageLayoutModule->paperwidthUnitCO->setEnabled(custom);
|
|
|
|
pageLayoutModule->paperheightL->setEnabled(custom);
|
|
|
|
pageLayoutModule->paperheightLE->setEnabled(custom);
|
|
|
|
pageLayoutModule->paperheightLE->setFocus();
|
|
|
|
pageLayoutModule->paperheightUnitCO->setEnabled(custom);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::setCustomMargins(bool custom)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
marginsModule->topL->setEnabled(!custom);
|
|
|
|
marginsModule->topLE->setEnabled(!custom);
|
|
|
|
marginsModule->topUnit->setEnabled(!custom);
|
|
|
|
|
|
|
|
marginsModule->bottomL->setEnabled(!custom);
|
|
|
|
marginsModule->bottomLE->setEnabled(!custom);
|
|
|
|
marginsModule->bottomUnit->setEnabled(!custom);
|
|
|
|
|
|
|
|
marginsModule->innerL->setEnabled(!custom);
|
|
|
|
marginsModule->innerLE->setEnabled(!custom);
|
|
|
|
marginsModule->innerUnit->setEnabled(!custom);
|
|
|
|
|
|
|
|
marginsModule->outerL->setEnabled(!custom);
|
|
|
|
marginsModule->outerLE->setEnabled(!custom);
|
|
|
|
marginsModule->outerUnit->setEnabled(!custom);
|
|
|
|
|
|
|
|
marginsModule->headheightL->setEnabled(!custom);
|
|
|
|
marginsModule->headheightLE->setEnabled(!custom);
|
|
|
|
marginsModule->headheightUnit->setEnabled(!custom);
|
|
|
|
|
|
|
|
marginsModule->headsepL->setEnabled(!custom);
|
|
|
|
marginsModule->headsepLE->setEnabled(!custom);
|
|
|
|
marginsModule->headsepUnit->setEnabled(!custom);
|
|
|
|
|
|
|
|
marginsModule->footskipL->setEnabled(!custom);
|
|
|
|
marginsModule->footskipLE->setEnabled(!custom);
|
|
|
|
marginsModule->footskipUnit->setEnabled(!custom);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::updateFontsize(string const & items, string const & sel)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
fontModule->fontsizeCO->clear();
|
2007-06-01 17:44:04 +00:00
|
|
|
fontModule->fontsizeCO->addItem(qt_("Default"));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
for (int n = 0; !token(items,'|',n).empty(); ++n)
|
|
|
|
fontModule->fontsizeCO->
|
|
|
|
addItem(toqstr(token(items,'|',n)));
|
|
|
|
|
|
|
|
for (int n = 0; n < fontModule->fontsizeCO->count(); ++n) {
|
|
|
|
if (fromqstr(fontModule->fontsizeCO->itemText(n)) == sel) {
|
|
|
|
fontModule->fontsizeCO->setCurrentIndex(n);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::romanChanged(int item)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
string const font = tex_fonts_roman[item];
|
2007-10-06 22:43:21 +00:00
|
|
|
fontModule->fontScCB->setEnabled(providesSC(font));
|
|
|
|
fontModule->fontOsfCB->setEnabled(providesOSF(font));
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::sansChanged(int item)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
string const font = tex_fonts_sans[item];
|
2007-10-06 22:43:21 +00:00
|
|
|
bool scaleable = providesScale(font);
|
2007-04-24 19:37:34 +00:00
|
|
|
fontModule->scaleSansSB->setEnabled(scaleable);
|
|
|
|
fontModule->scaleSansLA->setEnabled(scaleable);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::ttChanged(int item)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
string const font = tex_fonts_monospaced[item];
|
2007-10-06 22:43:21 +00:00
|
|
|
bool scaleable = providesScale(font);
|
2007-04-24 19:37:34 +00:00
|
|
|
fontModule->scaleTypewriterSB->setEnabled(scaleable);
|
|
|
|
fontModule->scaleTypewriterLA->setEnabled(scaleable);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::updatePagestyle(string const & items, string const & sel)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
2007-06-01 17:44:04 +00:00
|
|
|
pagestyles.clear();
|
2007-04-24 19:37:34 +00:00
|
|
|
pageLayoutModule->pagestyleCO->clear();
|
2007-06-01 17:44:04 +00:00
|
|
|
pageLayoutModule->pagestyleCO->addItem(qt_("Default"));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
2007-06-01 17:44:04 +00:00
|
|
|
for (int n = 0; !token(items,'|',n).empty(); ++n) {
|
|
|
|
string style = token(items, '|', n);
|
|
|
|
docstring style_gui = _(style);
|
|
|
|
pagestyles.push_back(pair<string, docstring>(style, style_gui));
|
|
|
|
pageLayoutModule->pagestyleCO->addItem(toqstr(style_gui));
|
|
|
|
}
|
2007-04-24 19:37:34 +00:00
|
|
|
|
2007-06-01 17:44:04 +00:00
|
|
|
if (sel == "default") {
|
|
|
|
pageLayoutModule->pagestyleCO->setCurrentIndex(0);
|
|
|
|
return;
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
2007-06-01 17:44:04 +00:00
|
|
|
|
2007-09-08 21:00:49 +00:00
|
|
|
int nn = 0;
|
2007-06-01 17:44:04 +00:00
|
|
|
|
|
|
|
for (size_t i = 0; i < pagestyles.size(); ++i)
|
|
|
|
if (pagestyles[i].first == sel)
|
2007-09-08 21:00:49 +00:00
|
|
|
nn = pageLayoutModule->pagestyleCO->findText(
|
2007-06-01 17:44:04 +00:00
|
|
|
toqstr(pagestyles[i].second));
|
|
|
|
|
2007-09-08 21:00:49 +00:00
|
|
|
if (nn > 0)
|
2007-09-08 22:08:46 +00:00
|
|
|
pageLayoutModule->pagestyleCO->setCurrentIndex(nn);
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::classChanged()
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
2007-04-25 16:39:21 +00:00
|
|
|
textclass_type const tc = latexModule->classCO->currentIndex();
|
2007-10-06 22:43:21 +00:00
|
|
|
bp_.setJustBaseClass(tc);
|
This patch continues 19964. It takes advantage of the work there to simplify a few things elsewhere. First, in ControlDocument::dispatchParams(), we're setting the TextClass and then dispatching the BufferParams, which sets it again now. So we can get rid of the first call. This, however, requires loading the TextClass somewhere other than LFUN_TEXTCLASS_APPLY, which I do in BufferParams::setBaseClass(), which is when you'd actually need to do it. So I've moved some of the loading logic there. (It seemed a good idea to make setBaseClass() return whether it was successful, then, though this isn't used at the moment.)
That makes another simplification both possible and desirable. For some reason, whenever you change the Document Class combobox in Document Settings, LyX tries to read whatever you choose _before_ you try to hit "Apply". Why? I see no good reason. You get the warning earlier that way, but maybe you weren't going to try to load it anyway and were going to change your mind. So I have removed that behavior, in which case you'll get the warning when you try to apply the parameters. This means we can also remove ControlDocument::loadTextclass().
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19965 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-01 04:03:24 +00:00
|
|
|
if (lyxrc.auto_reset_options)
|
2007-10-06 22:43:21 +00:00
|
|
|
bp_.useClassDefaults();
|
2007-09-11 18:33:42 +00:00
|
|
|
updateContents();
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::updateModuleInfo()
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
{
|
|
|
|
selectionManager->update();
|
|
|
|
//Module description
|
|
|
|
QListView const * const lv = selectionManager->selectedFocused() ?
|
|
|
|
latexModule->selectedLV :
|
|
|
|
latexModule->availableLV;
|
|
|
|
if (lv->selectionModel()->selectedIndexes().isEmpty())
|
|
|
|
latexModule->infoML->document()->clear();
|
|
|
|
else {
|
|
|
|
QModelIndex const idx = lv->selectionModel()->currentIndex();
|
|
|
|
string const modName = fromqstr(idx.data().toString());
|
2007-10-06 22:43:21 +00:00
|
|
|
string desc = getModuleDescription(modName);
|
|
|
|
vector<string> pkgList = getPackageList(modName);
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
string pkgdesc;
|
|
|
|
//this mess formats the package list as "pkg1, pkg2, and pkg3"
|
|
|
|
int const pkgListSize = pkgList.size();
|
|
|
|
for (int i = 0; i < pkgListSize; ++i) {
|
|
|
|
if (i == 1) {
|
|
|
|
if (i == pkgListSize - 1) //last element
|
|
|
|
pkgdesc += " and ";
|
|
|
|
else
|
|
|
|
pkgdesc += ", ";
|
|
|
|
} else if (i > 1) {
|
|
|
|
if (i == pkgListSize - 1) //last element
|
|
|
|
pkgdesc += ", and ";
|
|
|
|
else
|
|
|
|
pkgdesc += ", ";
|
|
|
|
}
|
|
|
|
pkgdesc += pkgList[i];
|
|
|
|
}
|
2008-01-05 16:56:30 +00:00
|
|
|
if (!pkgdesc.empty()) {
|
|
|
|
if (!desc.empty())
|
|
|
|
desc += " ";
|
|
|
|
desc += ("Requires " + pkgdesc + ".");
|
|
|
|
}
|
|
|
|
if (!isModuleAvailable(modName)) {
|
|
|
|
if (!desc.empty())
|
|
|
|
desc += "\n";
|
|
|
|
desc += "WARNING: Some packages are unavailable!";
|
|
|
|
}
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
latexModule->infoML->document()->setPlainText(toqstr(desc));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-30 15:20:59 +00:00
|
|
|
void GuiDocument::updateEmbeddedFileList()
|
|
|
|
{
|
|
|
|
embeddedFilesModule->filesLW->clear();
|
|
|
|
// add current embedded files
|
|
|
|
EmbeddedFiles & files = buffer().embeddedFiles();
|
|
|
|
files.update();
|
|
|
|
EmbeddedFiles::EmbeddedFileList::iterator fit = files.begin();
|
|
|
|
EmbeddedFiles::EmbeddedFileList::iterator fit_end = files.end();
|
|
|
|
for (; fit != fit_end; ++fit) {
|
|
|
|
QString label = toqstr(fit->relFilename(buffer().filePath()));
|
|
|
|
if (fit->refCount() > 1)
|
|
|
|
label += " (" + QString::number(fit->refCount()) + ")";
|
|
|
|
QListWidgetItem * item = new QListWidgetItem(label);
|
|
|
|
item->setFlags(item->flags() | Qt::ItemIsSelectable
|
|
|
|
| Qt::ItemIsUserCheckable);
|
|
|
|
if(fit->embedded())
|
|
|
|
item->setCheckState(Qt::Checked);
|
|
|
|
else
|
|
|
|
item->setCheckState(Qt::Unchecked);
|
|
|
|
// index of the currently used ParConstIterator
|
|
|
|
embeddedFilesModule->filesLW->addItem(item);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::updateNumbering()
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
2007-10-06 22:43:21 +00:00
|
|
|
TextClass const & tclass = bp_.getTextClass();
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
numberingModule->tocTW->setUpdatesEnabled(false);
|
|
|
|
numberingModule->tocTW->clear();
|
|
|
|
|
|
|
|
int const depth = numberingModule->depthSL->value();
|
|
|
|
int const toc = numberingModule->tocSL->value();
|
|
|
|
QString const no = qt_("No");
|
|
|
|
QString const yes = qt_("Yes");
|
2007-04-29 19:53:54 +00:00
|
|
|
TextClass::const_iterator end = tclass.end();
|
|
|
|
TextClass::const_iterator cit = tclass.begin();
|
2007-04-24 19:37:34 +00:00
|
|
|
QTreeWidgetItem * item = 0;
|
|
|
|
for ( ; cit != end ; ++cit) {
|
|
|
|
int const toclevel = (*cit)->toclevel;
|
2007-05-28 22:27:45 +00:00
|
|
|
if (toclevel != Layout::NOT_IN_TOC
|
2007-04-24 19:37:34 +00:00
|
|
|
&& (*cit)->labeltype == LABEL_COUNTER) {
|
|
|
|
item = new QTreeWidgetItem(numberingModule->tocTW);
|
2007-07-11 13:39:08 +00:00
|
|
|
item->setText(0, toqstr(translateIfPossible((*cit)->name())));
|
2007-04-24 19:37:34 +00:00
|
|
|
item->setText(1, (toclevel <= depth) ? yes : no);
|
|
|
|
item->setText(2, (toclevel <= toc) ? yes : no);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
numberingModule->tocTW->setUpdatesEnabled(true);
|
|
|
|
numberingModule->tocTW->update();
|
|
|
|
}
|
|
|
|
|
2007-09-20 22:31:18 +00:00
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::apply(BufferParams & params)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
// preamble
|
2007-05-14 12:09:14 +00:00
|
|
|
preambleModule->apply(params);
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
// biblio
|
|
|
|
params.setCiteEngine(biblio::ENGINE_BASIC);
|
|
|
|
|
|
|
|
if (biblioModule->citeNatbibRB->isChecked()) {
|
|
|
|
bool const use_numerical_citations =
|
|
|
|
biblioModule->citeStyleCO->currentIndex();
|
|
|
|
if (use_numerical_citations)
|
|
|
|
params.setCiteEngine(biblio::ENGINE_NATBIB_NUMERICAL);
|
|
|
|
else
|
|
|
|
params.setCiteEngine(biblio::ENGINE_NATBIB_AUTHORYEAR);
|
|
|
|
|
|
|
|
} else if (biblioModule->citeJurabibRB->isChecked())
|
|
|
|
params.setCiteEngine(biblio::ENGINE_JURABIB);
|
|
|
|
|
|
|
|
params.use_bibtopic =
|
|
|
|
biblioModule->bibtopicCB->isChecked();
|
|
|
|
|
|
|
|
// language & quotes
|
2007-09-19 12:29:08 +00:00
|
|
|
if (langModule->defaultencodingRB->isChecked()) {
|
2007-04-24 19:37:34 +00:00
|
|
|
params.inputenc = "auto";
|
|
|
|
} else {
|
|
|
|
int i = langModule->encodingCO->currentIndex();
|
|
|
|
if (i == 0)
|
|
|
|
params.inputenc = "default";
|
|
|
|
else
|
|
|
|
params.inputenc =
|
|
|
|
fromqstr(langModule->encodingCO->currentText());
|
|
|
|
}
|
|
|
|
|
|
|
|
InsetQuotes::quote_language lga = InsetQuotes::EnglishQ;
|
|
|
|
switch (langModule->quoteStyleCO->currentIndex()) {
|
|
|
|
case 0:
|
|
|
|
lga = InsetQuotes::EnglishQ;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
lga = InsetQuotes::SwedishQ;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
lga = InsetQuotes::GermanQ;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
lga = InsetQuotes::PolishQ;
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
lga = InsetQuotes::FrenchQ;
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
lga = InsetQuotes::DanishQ;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
params.quotes_language = lga;
|
|
|
|
|
|
|
|
int const pos = langModule->languageCO->currentIndex();
|
2007-05-25 15:05:46 +00:00
|
|
|
params.language = lyx::languages.getLanguage(lang_[pos]);
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
// numbering
|
2007-04-29 19:53:54 +00:00
|
|
|
if (params.getTextClass().hasTocLevels()) {
|
2007-04-24 19:37:34 +00:00
|
|
|
params.tocdepth = numberingModule->tocSL->value();
|
|
|
|
params.secnumdepth = numberingModule->depthSL->value();
|
|
|
|
}
|
|
|
|
|
|
|
|
// bullets
|
|
|
|
params.user_defined_bullet(0) = bulletsModule->getBullet(0);
|
|
|
|
params.user_defined_bullet(1) = bulletsModule->getBullet(1);
|
|
|
|
params.user_defined_bullet(2) = bulletsModule->getBullet(2);
|
|
|
|
params.user_defined_bullet(3) = bulletsModule->getBullet(3);
|
|
|
|
|
|
|
|
// packages
|
|
|
|
params.graphicsDriver =
|
2007-06-01 17:44:04 +00:00
|
|
|
tex_graphics[latexModule->psdriverCO->currentIndex()];
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
|
|
|
|
// Modules
|
|
|
|
params.clearLayoutModules();
|
|
|
|
QStringList const selMods = selectedModel()->stringList();
|
|
|
|
for (int i = 0; i != selMods.size(); ++i)
|
|
|
|
params.addLayoutModule(lyx::fromqstr(selMods[i]));
|
|
|
|
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
if (mathsModule->amsautoCB->isChecked()) {
|
|
|
|
params.use_amsmath = BufferParams::package_auto;
|
|
|
|
} else {
|
|
|
|
if (mathsModule->amsCB->isChecked())
|
|
|
|
params.use_amsmath = BufferParams::package_on;
|
|
|
|
else
|
|
|
|
params.use_amsmath = BufferParams::package_off;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (mathsModule->esintautoCB->isChecked())
|
|
|
|
params.use_esint = BufferParams::package_auto;
|
|
|
|
else {
|
|
|
|
if (mathsModule->esintCB->isChecked())
|
|
|
|
params.use_esint = BufferParams::package_on;
|
|
|
|
else
|
|
|
|
params.use_esint = BufferParams::package_off;
|
|
|
|
}
|
|
|
|
|
|
|
|
// text layout
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This first patch does some reworking of the infrastructrue. We need to distinguish between the TextClass that a particular document is using and the layout of that document, since modules, in particular, can modify the layout. The solution adopted here is to add a TextClass pointer to BufferParams, which will hold the layout. The layout itself is then constructed from the TextClass the document is using. At present, this is completely trivial, but that will change when modules are added.
The pointer in question is a boost::shared_ptr. This is needed because CutAndPaste saves a copy of the layout with each cut or copied selection. We cannot assume the selection vanishes when the document is closed, so there are two options: (i) keep a list of all the layouts that have ever been used by any document; (ii) used some kind of smart pointer. The latter seems preferable, as the former would waste memory. More importantly, the use of a smart pointer allows modules to be modified on disk and then reloaded while LyX is running, and it will eventually allow the same for layout files.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19756 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-23 16:41:13 +00:00
|
|
|
params.setJustBaseClass(latexModule->classCO->currentIndex());
|
2007-04-24 19:37:34 +00:00
|
|
|
|
2007-06-01 17:44:04 +00:00
|
|
|
if (pageLayoutModule->pagestyleCO->currentIndex() == 0)
|
|
|
|
params.pagestyle = "default";
|
|
|
|
else {
|
|
|
|
docstring style_gui =
|
|
|
|
qstring_to_ucs4(pageLayoutModule->pagestyleCO->currentText());
|
|
|
|
for (size_t i = 0; i < pagestyles.size(); ++i)
|
|
|
|
if (pagestyles[i].second == style_gui)
|
|
|
|
params.pagestyle = pagestyles[i].first;
|
|
|
|
}
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
switch (textLayoutModule->lspacingCO->currentIndex()) {
|
|
|
|
case 0:
|
|
|
|
params.spacing().set(Spacing::Single);
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
params.spacing().set(Spacing::Onehalf);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
params.spacing().set(Spacing::Double);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
params.spacing().set(Spacing::Other,
|
|
|
|
fromqstr(textLayoutModule->lspacingLE->text()));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (textLayoutModule->twoColumnCB->isChecked())
|
|
|
|
params.columns = 2;
|
|
|
|
else
|
|
|
|
params.columns = 1;
|
|
|
|
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
// text should have passed validation
|
2007-05-25 12:32:08 +00:00
|
|
|
params.listings_params =
|
|
|
|
InsetListingsParams(fromqstr(textLayoutModule->listingsED->toPlainText())).params();
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
|
2007-04-24 19:37:34 +00:00
|
|
|
if (textLayoutModule->indentRB->isChecked())
|
|
|
|
params.paragraph_separation = BufferParams::PARSEP_INDENT;
|
|
|
|
else
|
|
|
|
params.paragraph_separation = BufferParams::PARSEP_SKIP;
|
|
|
|
|
|
|
|
switch (textLayoutModule->skipCO->currentIndex()) {
|
|
|
|
case 0:
|
|
|
|
params.setDefSkip(VSpace(VSpace::SMALLSKIP));
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
params.setDefSkip(VSpace(VSpace::MEDSKIP));
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
params.setDefSkip(VSpace(VSpace::BIGSKIP));
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
{
|
|
|
|
VSpace vs = VSpace(
|
|
|
|
widgetsToLength(textLayoutModule->skipLE,
|
|
|
|
textLayoutModule->skipLengthCO)
|
|
|
|
);
|
|
|
|
params.setDefSkip(vs);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
// DocumentDefskipCB assures that this never happens
|
|
|
|
// so Assert then !!! - jbl
|
|
|
|
params.setDefSkip(VSpace(VSpace::MEDSKIP));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
params.options =
|
|
|
|
fromqstr(latexModule->optionsLE->text());
|
|
|
|
|
|
|
|
params.float_placement = floatModule->get();
|
|
|
|
|
|
|
|
// fonts
|
|
|
|
params.fontsRoman =
|
|
|
|
tex_fonts_roman[fontModule->fontsRomanCO->currentIndex()];
|
|
|
|
|
|
|
|
params.fontsSans =
|
|
|
|
tex_fonts_sans[fontModule->fontsSansCO->currentIndex()];
|
|
|
|
|
|
|
|
params.fontsTypewriter =
|
|
|
|
tex_fonts_monospaced[fontModule->fontsTypewriterCO->currentIndex()];
|
|
|
|
|
|
|
|
params.fontsSansScale = fontModule->scaleSansSB->value();
|
|
|
|
|
|
|
|
params.fontsTypewriterScale = fontModule->scaleTypewriterSB->value();
|
|
|
|
|
|
|
|
params.fontsSC = fontModule->fontScCB->isChecked();
|
|
|
|
|
|
|
|
params.fontsOSF = fontModule->fontOsfCB->isChecked();
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
params.fontsDefaultFamily = GuiDocument::fontfamilies[
|
2007-04-24 19:37:34 +00:00
|
|
|
fontModule->fontsDefaultCO->currentIndex()];
|
|
|
|
|
|
|
|
if (fontModule->fontsizeCO->currentIndex() == 0)
|
|
|
|
params.fontsize = "default";
|
|
|
|
else
|
|
|
|
params.fontsize =
|
|
|
|
fromqstr(fontModule->fontsizeCO->currentText());
|
|
|
|
|
|
|
|
// paper
|
|
|
|
params.papersize = PAPER_SIZE(
|
|
|
|
pageLayoutModule->papersizeCO->currentIndex());
|
|
|
|
|
|
|
|
// custom, A3, B3 and B4 paper sizes need geometry
|
|
|
|
int psize = pageLayoutModule->papersizeCO->currentIndex();
|
|
|
|
bool geom_papersize = (psize == 1 || psize == 5 || psize == 8 || psize == 9);
|
|
|
|
|
|
|
|
params.paperwidth = widgetsToLength(pageLayoutModule->paperwidthLE,
|
|
|
|
pageLayoutModule->paperwidthUnitCO);
|
|
|
|
|
|
|
|
params.paperheight = widgetsToLength(pageLayoutModule->paperheightLE,
|
|
|
|
pageLayoutModule->paperheightUnitCO);
|
|
|
|
|
|
|
|
if (pageLayoutModule->facingPagesCB->isChecked())
|
2007-11-07 23:25:08 +00:00
|
|
|
params.sides = TwoSides;
|
2007-04-24 19:37:34 +00:00
|
|
|
else
|
2007-11-07 23:25:08 +00:00
|
|
|
params.sides = OneSide;
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
if (pageLayoutModule->landscapeRB->isChecked())
|
|
|
|
params.orientation = ORIENTATION_LANDSCAPE;
|
|
|
|
else
|
|
|
|
params.orientation = ORIENTATION_PORTRAIT;
|
|
|
|
|
|
|
|
// margins
|
|
|
|
params.use_geometry =
|
|
|
|
(!marginsModule->marginCB->isChecked()
|
|
|
|
|| geom_papersize);
|
|
|
|
|
|
|
|
Ui::MarginsUi const * m(marginsModule);
|
|
|
|
|
|
|
|
params.leftmargin = widgetsToLength(m->innerLE, m->innerUnit);
|
|
|
|
params.topmargin = widgetsToLength(m->topLE, m->topUnit);
|
|
|
|
params.rightmargin = widgetsToLength(m->outerLE, m->outerUnit);
|
|
|
|
params.bottommargin = widgetsToLength(m->bottomLE, m->bottomUnit);
|
|
|
|
params.headheight = widgetsToLength(m->headheightLE, m->headheightUnit);
|
|
|
|
params.headsep = widgetsToLength(m->headsepLE, m->headsepUnit);
|
|
|
|
params.footskip = widgetsToLength(m->footskipLE, m->footskipUnit);
|
|
|
|
|
|
|
|
branchesModule->apply(params);
|
2007-09-20 22:31:18 +00:00
|
|
|
|
|
|
|
// PDF support
|
|
|
|
PDFOptions & pdf = params.pdfoptions();
|
2007-09-22 22:20:15 +00:00
|
|
|
pdf.use_hyperref = pdfSupportModule->use_hyperrefGB->isChecked();
|
2007-09-21 01:00:31 +00:00
|
|
|
pdf.title = fromqstr(pdfSupportModule->titleLE->text());
|
|
|
|
pdf.author = fromqstr(pdfSupportModule->authorLE->text());
|
|
|
|
pdf.subject = fromqstr(pdfSupportModule->subjectLE->text());
|
|
|
|
pdf.keywords = fromqstr(pdfSupportModule->keywordsLE->text());
|
|
|
|
|
|
|
|
pdf.bookmarks = pdfSupportModule->bookmarksGB->isChecked();
|
|
|
|
pdf.bookmarksnumbered = pdfSupportModule->bookmarksnumberedCB->isChecked();
|
|
|
|
pdf.bookmarksopen = pdfSupportModule->bookmarksopenGB->isChecked();
|
2007-09-22 22:20:15 +00:00
|
|
|
pdf.bookmarksopenlevel = pdfSupportModule->bookmarksopenlevelSB->value();
|
2007-09-20 22:31:18 +00:00
|
|
|
|
2007-09-21 01:00:31 +00:00
|
|
|
pdf.breaklinks = pdfSupportModule->breaklinksCB->isChecked();
|
|
|
|
pdf.pdfborder = pdfSupportModule->pdfborderCB->isChecked();
|
2007-10-10 00:34:23 +00:00
|
|
|
pdf.pdfusetitle = pdfSupportModule->pdfusetitleCB->isChecked();
|
2007-09-21 01:00:31 +00:00
|
|
|
pdf.colorlinks = pdfSupportModule->colorlinksCB->isChecked();
|
|
|
|
pdf.backref = pdfSupportModule->backrefCB->isChecked();
|
|
|
|
pdf.pagebackref = pdfSupportModule->pagebackrefCB->isChecked();
|
2007-09-20 22:31:18 +00:00
|
|
|
if (pdfSupportModule->fullscreenCB->isChecked())
|
2007-09-21 01:00:31 +00:00
|
|
|
pdf.pagemode = pdf.pagemode_fullscreen;
|
2007-09-22 22:20:15 +00:00
|
|
|
else
|
|
|
|
pdf.pagemode.clear();
|
2007-09-21 01:00:31 +00:00
|
|
|
pdf.quoted_options = fromqstr(pdfSupportModule->optionsLE->text());
|
2007-10-29 04:07:38 +00:00
|
|
|
|
|
|
|
// Embedded files
|
|
|
|
// FIXME
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** Return the position of val in the vector if found.
|
|
|
|
If not found, return 0.
|
|
|
|
*/
|
|
|
|
template<class A>
|
2007-12-12 19:28:07 +00:00
|
|
|
static size_t findPos(vector<A> const & vec, A const & val)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
2007-12-12 19:28:07 +00:00
|
|
|
typename vector<A>::const_iterator it =
|
|
|
|
find(vec.begin(), vec.end(), val);
|
2007-04-24 19:37:34 +00:00
|
|
|
if (it == vec.end())
|
|
|
|
return 0;
|
|
|
|
return distance(vec.begin(), it);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::updateParams()
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
{
|
2007-10-06 22:43:21 +00:00
|
|
|
updateParams(bp_);
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::updateParams(BufferParams const & params)
|
2007-04-24 19:37:34 +00:00
|
|
|
{
|
|
|
|
// set the default unit
|
2007-04-28 12:58:49 +00:00
|
|
|
Length::UNIT defaultUnit = Length::CM;
|
2007-04-24 19:37:34 +00:00
|
|
|
switch (lyxrc.default_papersize) {
|
|
|
|
case PAPER_DEFAULT: break;
|
|
|
|
|
|
|
|
case PAPER_USLETTER:
|
|
|
|
case PAPER_USLEGAL:
|
|
|
|
case PAPER_USEXECUTIVE:
|
2007-04-28 12:58:49 +00:00
|
|
|
defaultUnit = Length::IN;
|
2007-04-24 19:37:34 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PAPER_A3:
|
|
|
|
case PAPER_A4:
|
|
|
|
case PAPER_A5:
|
|
|
|
case PAPER_B3:
|
|
|
|
case PAPER_B4:
|
|
|
|
case PAPER_B5:
|
2007-04-28 12:58:49 +00:00
|
|
|
defaultUnit = Length::CM;
|
2007-04-24 19:37:34 +00:00
|
|
|
break;
|
|
|
|
case PAPER_CUSTOM:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// preamble
|
2007-10-06 22:43:21 +00:00
|
|
|
preambleModule->update(params, id());
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
// biblio
|
|
|
|
biblioModule->citeDefaultRB->setChecked(
|
|
|
|
params.getEngine() == biblio::ENGINE_BASIC);
|
|
|
|
|
|
|
|
biblioModule->citeNatbibRB->setChecked(
|
|
|
|
params.getEngine() == biblio::ENGINE_NATBIB_NUMERICAL ||
|
|
|
|
params.getEngine() == biblio::ENGINE_NATBIB_AUTHORYEAR);
|
|
|
|
|
|
|
|
biblioModule->citeStyleCO->setCurrentIndex(
|
|
|
|
params.getEngine() == biblio::ENGINE_NATBIB_NUMERICAL);
|
|
|
|
|
|
|
|
biblioModule->citeJurabibRB->setChecked(
|
|
|
|
params.getEngine() == biblio::ENGINE_JURABIB);
|
|
|
|
|
|
|
|
biblioModule->bibtopicCB->setChecked(
|
|
|
|
params.use_bibtopic);
|
|
|
|
|
|
|
|
// language & quotes
|
|
|
|
int const pos = int(findPos(lang_,
|
|
|
|
params.language->lang()));
|
|
|
|
langModule->languageCO->setCurrentIndex(pos);
|
|
|
|
|
|
|
|
langModule->quoteStyleCO->setCurrentIndex(
|
|
|
|
params.quotes_language);
|
|
|
|
|
2007-09-19 12:29:08 +00:00
|
|
|
bool default_enc = true;
|
2007-04-24 19:37:34 +00:00
|
|
|
if (params.inputenc != "auto") {
|
2007-09-19 12:29:08 +00:00
|
|
|
default_enc = false;
|
2007-04-24 19:37:34 +00:00
|
|
|
if (params.inputenc == "default") {
|
|
|
|
langModule->encodingCO->setCurrentIndex(0);
|
|
|
|
} else {
|
|
|
|
int const i = langModule->encodingCO->findText(
|
|
|
|
toqstr(params.inputenc));
|
|
|
|
if (i >= 0)
|
|
|
|
langModule->encodingCO->setCurrentIndex(i);
|
|
|
|
else
|
|
|
|
// unknown encoding. Set to default.
|
2007-09-19 12:29:08 +00:00
|
|
|
default_enc = true;
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
}
|
2007-09-19 12:29:08 +00:00
|
|
|
langModule->defaultencodingRB->setChecked(default_enc);
|
|
|
|
langModule->otherencodingRB->setChecked(!default_enc);
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
// numbering
|
2007-10-06 22:43:21 +00:00
|
|
|
int const min_toclevel = textClass().min_toclevel();
|
|
|
|
int const max_toclevel = textClass().max_toclevel();
|
|
|
|
if (textClass().hasTocLevels()) {
|
2007-04-24 19:37:34 +00:00
|
|
|
numberingModule->setEnabled(true);
|
|
|
|
numberingModule->depthSL->setMinimum(min_toclevel - 1);
|
|
|
|
numberingModule->depthSL->setMaximum(max_toclevel);
|
|
|
|
numberingModule->depthSL->setValue(params.secnumdepth);
|
|
|
|
numberingModule->tocSL->setMaximum(min_toclevel - 1);
|
|
|
|
numberingModule->tocSL->setMaximum(max_toclevel);
|
|
|
|
numberingModule->tocSL->setValue(params.tocdepth);
|
|
|
|
updateNumbering();
|
|
|
|
} else {
|
|
|
|
numberingModule->setEnabled(false);
|
|
|
|
numberingModule->tocTW->clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
// bullets
|
|
|
|
bulletsModule->setBullet(0, params.user_defined_bullet(0));
|
|
|
|
bulletsModule->setBullet(1, params.user_defined_bullet(1));
|
|
|
|
bulletsModule->setBullet(2, params.user_defined_bullet(2));
|
|
|
|
bulletsModule->setBullet(3, params.user_defined_bullet(3));
|
|
|
|
bulletsModule->init();
|
|
|
|
|
|
|
|
// packages
|
2007-06-01 17:44:04 +00:00
|
|
|
int nitem = findToken(tex_graphics, params.graphicsDriver);
|
|
|
|
if (nitem >= 0)
|
|
|
|
latexModule->psdriverCO->setCurrentIndex(nitem);
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
updateModuleInfo();
|
|
|
|
|
2007-04-24 19:37:34 +00:00
|
|
|
mathsModule->amsCB->setChecked(
|
|
|
|
params.use_amsmath == BufferParams::package_on);
|
|
|
|
mathsModule->amsautoCB->setChecked(
|
|
|
|
params.use_amsmath == BufferParams::package_auto);
|
|
|
|
|
|
|
|
mathsModule->esintCB->setChecked(
|
|
|
|
params.use_esint == BufferParams::package_on);
|
|
|
|
mathsModule->esintautoCB->setChecked(
|
|
|
|
params.use_esint == BufferParams::package_auto);
|
|
|
|
|
|
|
|
switch (params.spacing().getSpace()) {
|
|
|
|
case Spacing::Other: nitem = 3; break;
|
|
|
|
case Spacing::Double: nitem = 2; break;
|
|
|
|
case Spacing::Onehalf: nitem = 1; break;
|
|
|
|
case Spacing::Default: case Spacing::Single: nitem = 0; break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// text layout
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This first patch does some reworking of the infrastructrue. We need to distinguish between the TextClass that a particular document is using and the layout of that document, since modules, in particular, can modify the layout. The solution adopted here is to add a TextClass pointer to BufferParams, which will hold the layout. The layout itself is then constructed from the TextClass the document is using. At present, this is completely trivial, but that will change when modules are added.
The pointer in question is a boost::shared_ptr. This is needed because CutAndPaste saves a copy of the layout with each cut or copied selection. We cannot assume the selection vanishes when the document is closed, so there are two options: (i) keep a list of all the layouts that have ever been used by any document; (ii) used some kind of smart pointer. The latter seems preferable, as the former would waste memory. More importantly, the use of a smart pointer allows modules to be modified on disk and then reloaded while LyX is running, and it will eventually allow the same for layout files.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19756 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-23 16:41:13 +00:00
|
|
|
latexModule->classCO->setCurrentIndex(params.getBaseClass());
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
updatePagestyle(textClass().opt_pagestyle(),
|
2007-04-24 19:37:34 +00:00
|
|
|
params.pagestyle);
|
|
|
|
|
|
|
|
textLayoutModule->lspacingCO->setCurrentIndex(nitem);
|
|
|
|
if (params.spacing().getSpace() == Spacing::Other) {
|
|
|
|
textLayoutModule->lspacingLE->setText(
|
|
|
|
toqstr(params.spacing().getValueAsString()));
|
|
|
|
}
|
|
|
|
setLSpacing(nitem);
|
|
|
|
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
if (params.paragraph_separation == BufferParams::PARSEP_INDENT)
|
2007-04-24 19:37:34 +00:00
|
|
|
textLayoutModule->indentRB->setChecked(true);
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
else
|
2007-04-24 19:37:34 +00:00
|
|
|
textLayoutModule->skipRB->setChecked(true);
|
|
|
|
|
|
|
|
int skip = 0;
|
|
|
|
switch (params.getDefSkip().kind()) {
|
|
|
|
case VSpace::SMALLSKIP:
|
|
|
|
skip = 0;
|
|
|
|
break;
|
|
|
|
case VSpace::MEDSKIP:
|
|
|
|
skip = 1;
|
|
|
|
break;
|
|
|
|
case VSpace::BIGSKIP:
|
|
|
|
skip = 2;
|
|
|
|
break;
|
|
|
|
case VSpace::LENGTH:
|
|
|
|
{
|
|
|
|
skip = 3;
|
|
|
|
string const length = params.getDefSkip().asLyXCommand();
|
|
|
|
lengthToWidgets(textLayoutModule->skipLE,
|
|
|
|
textLayoutModule->skipLengthCO,
|
|
|
|
length, defaultUnit);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
skip = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
textLayoutModule->skipCO->setCurrentIndex(skip);
|
|
|
|
setSkip(skip);
|
|
|
|
|
|
|
|
textLayoutModule->twoColumnCB->setChecked(
|
|
|
|
params.columns == 2);
|
2007-05-28 22:27:45 +00:00
|
|
|
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
// break listings_params to multiple lines
|
2007-05-25 12:32:08 +00:00
|
|
|
string lstparams =
|
|
|
|
InsetListingsParams(params.listings_params).separatedParams();
|
2007-05-10 10:44:16 +00:00
|
|
|
textLayoutModule->listingsED->setPlainText(toqstr(lstparams));
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
if (!params.options.empty()) {
|
|
|
|
latexModule->optionsLE->setText(
|
|
|
|
toqstr(params.options));
|
|
|
|
} else {
|
2007-09-05 20:33:29 +00:00
|
|
|
latexModule->optionsLE->setText(QString());
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
floatModule->set(params.float_placement);
|
|
|
|
|
2007-09-05 20:33:29 +00:00
|
|
|
// Fonts
|
2007-10-06 22:43:21 +00:00
|
|
|
updateFontsize(textClass().opt_fontsize(),
|
2007-04-24 19:37:34 +00:00
|
|
|
params.fontsize);
|
|
|
|
|
|
|
|
int n = findToken(tex_fonts_roman, params.fontsRoman);
|
|
|
|
if (n >= 0) {
|
|
|
|
fontModule->fontsRomanCO->setCurrentIndex(n);
|
|
|
|
romanChanged(n);
|
|
|
|
}
|
|
|
|
|
|
|
|
n = findToken(tex_fonts_sans, params.fontsSans);
|
|
|
|
if (n >= 0) {
|
|
|
|
fontModule->fontsSansCO->setCurrentIndex(n);
|
|
|
|
sansChanged(n);
|
|
|
|
}
|
|
|
|
|
|
|
|
n = findToken(tex_fonts_monospaced, params.fontsTypewriter);
|
|
|
|
if (n >= 0) {
|
|
|
|
fontModule->fontsTypewriterCO->setCurrentIndex(n);
|
|
|
|
ttChanged(n);
|
|
|
|
}
|
|
|
|
|
|
|
|
fontModule->fontScCB->setChecked(params.fontsSC);
|
|
|
|
fontModule->fontOsfCB->setChecked(params.fontsOSF);
|
|
|
|
fontModule->scaleSansSB->setValue(params.fontsSansScale);
|
|
|
|
fontModule->scaleTypewriterSB->setValue(params.fontsTypewriterScale);
|
2007-10-06 22:43:21 +00:00
|
|
|
n = findToken(GuiDocument::fontfamilies, params.fontsDefaultFamily);
|
2007-04-24 19:37:34 +00:00
|
|
|
if (n >= 0)
|
|
|
|
fontModule->fontsDefaultCO->setCurrentIndex(n);
|
|
|
|
|
|
|
|
// paper
|
|
|
|
int const psize = params.papersize;
|
|
|
|
pageLayoutModule->papersizeCO->setCurrentIndex(psize);
|
|
|
|
setCustomPapersize(psize);
|
|
|
|
|
|
|
|
bool const landscape =
|
|
|
|
params.orientation == ORIENTATION_LANDSCAPE;
|
|
|
|
pageLayoutModule->landscapeRB->setChecked(landscape);
|
|
|
|
pageLayoutModule->portraitRB->setChecked(!landscape);
|
|
|
|
|
|
|
|
pageLayoutModule->facingPagesCB->setChecked(
|
2007-11-07 23:25:08 +00:00
|
|
|
params.sides == TwoSides);
|
2007-04-24 19:37:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
lengthToWidgets(pageLayoutModule->paperwidthLE,
|
|
|
|
pageLayoutModule->paperwidthUnitCO, params.paperwidth, defaultUnit);
|
|
|
|
|
|
|
|
lengthToWidgets(pageLayoutModule->paperheightLE,
|
|
|
|
pageLayoutModule->paperheightUnitCO, params.paperheight, defaultUnit);
|
|
|
|
|
|
|
|
// margins
|
|
|
|
Ui::MarginsUi * m = marginsModule;
|
|
|
|
|
|
|
|
setMargins(!params.use_geometry);
|
|
|
|
|
|
|
|
lengthToWidgets(m->topLE, m->topUnit,
|
|
|
|
params.topmargin, defaultUnit);
|
|
|
|
|
|
|
|
lengthToWidgets(m->bottomLE, m->bottomUnit,
|
|
|
|
params.bottommargin, defaultUnit);
|
|
|
|
|
|
|
|
lengthToWidgets(m->innerLE, m->innerUnit,
|
|
|
|
params.leftmargin, defaultUnit);
|
|
|
|
|
|
|
|
lengthToWidgets(m->outerLE, m->outerUnit,
|
|
|
|
params.rightmargin, defaultUnit);
|
|
|
|
|
|
|
|
lengthToWidgets(m->headheightLE, m->headheightUnit,
|
|
|
|
params.headheight, defaultUnit);
|
|
|
|
|
|
|
|
lengthToWidgets(m->headsepLE, m->headsepUnit,
|
|
|
|
params.headsep, defaultUnit);
|
|
|
|
|
|
|
|
lengthToWidgets(m->footskipLE, m->footskipUnit,
|
|
|
|
params.footskip, defaultUnit);
|
|
|
|
|
|
|
|
branchesModule->update(params);
|
2007-09-20 22:31:18 +00:00
|
|
|
|
|
|
|
// PDF support
|
|
|
|
PDFOptions const & pdf = params.pdfoptions();
|
2007-09-22 22:20:15 +00:00
|
|
|
pdfSupportModule->use_hyperrefGB->setChecked(pdf.use_hyperref);
|
2007-09-21 01:00:31 +00:00
|
|
|
pdfSupportModule->titleLE->setText(toqstr(pdf.title));
|
|
|
|
pdfSupportModule->authorLE->setText(toqstr(pdf.author));
|
|
|
|
pdfSupportModule->subjectLE->setText(toqstr(pdf.subject));
|
|
|
|
pdfSupportModule->keywordsLE->setText(toqstr(pdf.keywords));
|
2007-09-20 22:31:18 +00:00
|
|
|
|
2007-09-21 01:00:31 +00:00
|
|
|
pdfSupportModule->bookmarksGB->setChecked(pdf.bookmarks);
|
|
|
|
pdfSupportModule->bookmarksnumberedCB->setChecked(pdf.bookmarksnumbered);
|
|
|
|
pdfSupportModule->bookmarksopenGB->setChecked(pdf.bookmarksopen);
|
2007-09-20 22:31:18 +00:00
|
|
|
|
2007-09-22 22:20:15 +00:00
|
|
|
pdfSupportModule->bookmarksopenlevelSB->setValue(pdf.bookmarksopenlevel);
|
2007-09-20 22:31:18 +00:00
|
|
|
|
2007-09-21 01:00:31 +00:00
|
|
|
pdfSupportModule->breaklinksCB->setChecked(pdf.breaklinks);
|
|
|
|
pdfSupportModule->pdfborderCB->setChecked(pdf.pdfborder);
|
2007-10-10 00:34:23 +00:00
|
|
|
pdfSupportModule->pdfusetitleCB->setChecked(pdf.pdfusetitle);
|
2007-09-21 01:00:31 +00:00
|
|
|
pdfSupportModule->colorlinksCB->setChecked(pdf.colorlinks);
|
|
|
|
pdfSupportModule->backrefCB->setChecked(pdf.backref);
|
|
|
|
pdfSupportModule->pagebackrefCB->setChecked(pdf.pagebackref);
|
2007-09-20 22:31:18 +00:00
|
|
|
pdfSupportModule->fullscreenCB->setChecked
|
2007-09-21 01:00:31 +00:00
|
|
|
(pdf.pagemode == pdf.pagemode_fullscreen);
|
2007-09-20 22:31:18 +00:00
|
|
|
|
|
|
|
pdfSupportModule->optionsLE->setText(
|
2007-09-21 01:00:31 +00:00
|
|
|
toqstr(pdf.quoted_options));
|
2007-10-30 15:20:59 +00:00
|
|
|
|
|
|
|
// embedded files
|
|
|
|
updateEmbeddedFileList();
|
2007-04-24 19:37:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::applyView()
|
2006-03-05 17:24:44 +00:00
|
|
|
{
|
2007-10-06 22:43:21 +00:00
|
|
|
apply(params());
|
2006-03-05 17:24:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::saveDocDefault()
|
2006-03-05 17:24:44 +00:00
|
|
|
{
|
|
|
|
// we have to apply the params first
|
2007-09-03 20:28:26 +00:00
|
|
|
applyView();
|
2007-10-06 22:43:21 +00:00
|
|
|
saveAsDefault();
|
2006-03-05 17:24:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::updateContents()
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
{
|
|
|
|
//update list of available modules
|
|
|
|
QStringList strlist;
|
2007-10-06 22:43:21 +00:00
|
|
|
vector<string> const modNames = getModuleNames();
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
vector<string>::const_iterator it = modNames.begin();
|
|
|
|
for (; it != modNames.end(); ++it)
|
|
|
|
strlist.push_back(toqstr(*it));
|
|
|
|
available_model_.setStringList(strlist);
|
|
|
|
//and selected ones, too
|
|
|
|
QStringList strlist2;
|
2007-10-06 22:43:21 +00:00
|
|
|
vector<string> const & selMods = getSelectedModules();
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
it = selMods.begin();
|
|
|
|
for (; it != selMods.end(); ++it)
|
|
|
|
strlist2.push_back(toqstr(*it));
|
|
|
|
selected_model_.setStringList(strlist2);
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
updateParams(bp_);
|
This is the last of a series of patches that merges the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the GUI for managing modules.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20282 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-15 01:55:09 +00:00
|
|
|
}
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
void GuiDocument::useClassDefaults()
|
2006-03-05 17:24:44 +00:00
|
|
|
{
|
2007-10-06 22:43:21 +00:00
|
|
|
bp_.setJustBaseClass(latexModule->classCO->currentIndex());
|
|
|
|
bp_.useClassDefaults();
|
2007-09-11 18:33:42 +00:00
|
|
|
updateContents();
|
2006-03-05 17:24:44 +00:00
|
|
|
}
|
|
|
|
|
2007-07-27 18:17:00 +00:00
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
bool GuiDocument::isValid()
|
2007-07-27 18:17:00 +00:00
|
|
|
{
|
2007-09-05 20:33:29 +00:00
|
|
|
return validate_listings_params().empty();
|
2007-07-27 18:17:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
char const * const GuiDocument::fontfamilies[5] = {
|
|
|
|
"default", "rmdefault", "sfdefault", "ttdefault", ""
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
char const * GuiDocument::fontfamilies_gui[5] = {
|
|
|
|
N_("Default"), N_("Roman"), N_("Sans Serif"), N_("Typewriter"), ""
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
bool GuiDocument::initialiseParams(string const &)
|
|
|
|
{
|
|
|
|
bp_ = buffer().params();
|
|
|
|
loadModuleNames();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void GuiDocument::clearParams()
|
|
|
|
{
|
|
|
|
bp_ = BufferParams();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BufferId GuiDocument::id() const
|
|
|
|
{
|
|
|
|
return &buffer();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
vector<string> GuiDocument::getModuleNames()
|
|
|
|
{
|
|
|
|
return moduleNames_;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
vector<string> const & GuiDocument::getSelectedModules()
|
|
|
|
{
|
|
|
|
return params().getModules();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string GuiDocument::getModuleDescription(string const & modName) const
|
|
|
|
{
|
|
|
|
LyXModule const * const mod = moduleList[modName];
|
|
|
|
if (!mod)
|
2008-01-05 16:56:30 +00:00
|
|
|
return string("Module not found!");
|
2007-10-06 22:43:21 +00:00
|
|
|
return mod->description;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-01-05 16:56:30 +00:00
|
|
|
vector<string> GuiDocument::getPackageList(string const & modName) const
|
2007-10-06 22:43:21 +00:00
|
|
|
{
|
|
|
|
LyXModule const * const mod = moduleList[modName];
|
|
|
|
if (!mod)
|
|
|
|
return vector<string>(); //empty such thing
|
|
|
|
return mod->packageList;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-01-05 16:56:30 +00:00
|
|
|
bool GuiDocument::isModuleAvailable(string const & modName) const
|
|
|
|
{
|
|
|
|
LyXModule * mod = moduleList[modName];
|
|
|
|
return mod->isAvailable();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-06 22:43:21 +00:00
|
|
|
TextClass const & GuiDocument::textClass() const
|
|
|
|
{
|
|
|
|
return textclasslist[bp_.getBaseClass()];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-10-09 21:21:01 +00:00
|
|
|
static void dispatch_bufferparams(Dialog const & dialog,
|
2007-10-06 22:43:21 +00:00
|
|
|
BufferParams const & bp, kb_action lfun)
|
|
|
|
{
|
|
|
|
ostringstream ss;
|
|
|
|
ss << "\\begin_header\n";
|
|
|
|
bp.writeFile(ss);
|
|
|
|
ss << "\\end_header\n";
|
2007-10-09 21:21:01 +00:00
|
|
|
dialog.dispatch(FuncRequest(lfun, ss.str()));
|
2007-10-06 22:43:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void GuiDocument::dispatchParams()
|
|
|
|
{
|
|
|
|
// This must come first so that a language change is correctly noticed
|
|
|
|
setLanguage();
|
|
|
|
|
|
|
|
// Apply the BufferParams. Note that this will set the base class
|
|
|
|
// and then update the buffer's layout.
|
|
|
|
//FIXME Could this be done last? Then, I think, we'd get the automatic
|
|
|
|
//update mentioned in the next FIXME...
|
|
|
|
dispatch_bufferparams(*this, params(), LFUN_BUFFER_PARAMS_APPLY);
|
|
|
|
|
|
|
|
// Generate the colours requested by each new branch.
|
|
|
|
BranchList & branchlist = params().branchlist();
|
|
|
|
if (!branchlist.empty()) {
|
|
|
|
BranchList::const_iterator it = branchlist.begin();
|
|
|
|
BranchList::const_iterator const end = branchlist.end();
|
|
|
|
for (; it != end; ++it) {
|
|
|
|
docstring const & current_branch = it->getBranch();
|
|
|
|
Branch const * branch = branchlist.find(current_branch);
|
2007-10-09 21:21:01 +00:00
|
|
|
string const x11hexname = X11hexname(branch->getColor());
|
2007-10-06 22:43:21 +00:00
|
|
|
// display the new color
|
|
|
|
docstring const str = current_branch + ' ' + from_ascii(x11hexname);
|
|
|
|
dispatch(FuncRequest(LFUN_SET_COLOR, str));
|
|
|
|
}
|
|
|
|
|
|
|
|
// Open insets of selected branches, close deselected ones
|
|
|
|
dispatch(FuncRequest(LFUN_ALL_INSETS_TOGGLE,
|
|
|
|
"assign branch"));
|
|
|
|
}
|
|
|
|
// FIXME: If we used an LFUN, we would not need those two lines:
|
2007-10-10 08:52:55 +00:00
|
|
|
bufferview()->processUpdateFlags(Update::Force | Update::FitCursor);
|
2007-10-06 22:43:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void GuiDocument::setLanguage() const
|
|
|
|
{
|
|
|
|
Language const * const newL = bp_.language;
|
|
|
|
if (buffer().params().language == newL)
|
|
|
|
return;
|
|
|
|
|
|
|
|
string const & lang_name = newL->lang();
|
|
|
|
dispatch(FuncRequest(LFUN_BUFFER_LANGUAGE, lang_name));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void GuiDocument::saveAsDefault() const
|
|
|
|
{
|
|
|
|
dispatch_bufferparams(*this, params(), LFUN_BUFFER_SAVE_AS_DEFAULT);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool GuiDocument::isFontAvailable(string const & font) const
|
|
|
|
{
|
|
|
|
if (font == "default" || font == "cmr"
|
|
|
|
|| font == "cmss" || font == "cmtt")
|
|
|
|
// these are standard
|
|
|
|
return true;
|
|
|
|
if (font == "lmodern" || font == "lmss" || font == "lmtt")
|
|
|
|
return LaTeXFeatures::isAvailable("lmodern");
|
|
|
|
if (font == "times" || font == "palatino"
|
|
|
|
|| font == "helvet" || font == "courier")
|
|
|
|
return LaTeXFeatures::isAvailable("psnfss");
|
|
|
|
if (font == "cmbr" || font == "cmtl")
|
|
|
|
return LaTeXFeatures::isAvailable("cmbright");
|
|
|
|
if (font == "utopia")
|
|
|
|
return LaTeXFeatures::isAvailable("utopia")
|
|
|
|
|| LaTeXFeatures::isAvailable("fourier");
|
|
|
|
if (font == "beraserif" || font == "berasans"
|
|
|
|
|| font == "beramono")
|
|
|
|
return LaTeXFeatures::isAvailable("bera");
|
|
|
|
return LaTeXFeatures::isAvailable(font);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool GuiDocument::providesOSF(string const & font) const
|
|
|
|
{
|
|
|
|
if (font == "cmr")
|
|
|
|
return isFontAvailable("eco");
|
|
|
|
if (font == "palatino")
|
|
|
|
return isFontAvailable("mathpazo");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool GuiDocument::providesSC(string const & font) const
|
|
|
|
{
|
|
|
|
if (font == "palatino")
|
|
|
|
return isFontAvailable("mathpazo");
|
|
|
|
if (font == "utopia")
|
|
|
|
return isFontAvailable("fourier");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool GuiDocument::providesScale(string const & font) const
|
|
|
|
{
|
|
|
|
return font == "helvet" || font == "luximono"
|
|
|
|
|| font == "berasans" || font == "beramono";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void GuiDocument::loadModuleNames ()
|
|
|
|
{
|
|
|
|
moduleNames_.clear();
|
|
|
|
LyXModuleList::const_iterator it = moduleList.begin();
|
|
|
|
for (; it != moduleList.end(); ++it)
|
|
|
|
moduleNames_.push_back(it->name);
|
|
|
|
if (!moduleNames_.empty())
|
|
|
|
sort(moduleNames_.begin(), moduleNames_.end());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-11-23 09:44:02 +00:00
|
|
|
Dialog * createGuiDocument(GuiView & lv) { return new GuiDocument(lv); }
|
2007-10-06 22:43:21 +00:00
|
|
|
|
|
|
|
|
2006-03-05 17:24:44 +00:00
|
|
|
} // namespace frontend
|
|
|
|
} // namespace lyx
|
2007-04-24 19:37:34 +00:00
|
|
|
|
2007-08-31 05:53:55 +00:00
|
|
|
#include "GuiDocument_moc.cpp"
|