It's amazing we haven't seen problems with this before. The basic problem is that buf.errorList("whatever") would always return the same global, static error list, if it did not already exist. So, to a significant extent, there was only one global error list!
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38978 a592a061-630c-0410-9148-cb99ea01b6c8
layout to the current format.
This probably isn't needed for branch, since local layout was a
"hidden feature" prior to 2.0, and one can update local layout by:
(a) copying to a file
(b) running layout2layout on that file
(c) pasting back into LyX
So we should probably just leave this in trunk.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38622 a592a061-630c-0410-9148-cb99ea01b6c8
- Have InsetFlex::layoutName() report "Flex:" + the inset name.
- Do some layout2layout work so that user insets that do not have
the "Flex:" prefix get it.
Note that this will break some CopyStyle stuff, but we do not have any
decent way to do that, so users will have to make that change for
themselves. I guess we should add that to the release notes.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38112 a592a061-630c-0410-9148-cb99ea01b6c8
IsPredefined.
The point of this is that the current tag is doing both of these jobs,
and they are different. The achemso class shows this, since it uses
float.sty to define three different kinds of floats internally. We have
to set NeedsFloatPkg to false to prevent LyX from trying to redefine
them, but then we complain that there is no list command defined and so
do not enter it in Insert>List/TOC.
The new tag is not yet functional, just there.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37430 a592a061-630c-0410-9148-cb99ea01b6c8
if a float writes to the same auxfile as an existing float. E.g., in the
aguplus classes, we have a plate float that writes to lof and so is just
treated as a figure, for TOC purposes.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37427 a592a061-630c-0410-9148-cb99ea01b6c8
noticed that article, for example, still has a counter "chapter". This
surprised me.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37193 a592a061-630c-0410-9148-cb99ea01b6c8
the OptionalArgs tag does and is implemented by the now misnamed
InsetOptArgs, except that its content gets wrapped in "{}" rather than
"[]". Required arguments do not actually have to be provided, but they
are always output.
This will allow e.g. beamer's Block environment to be implemented
without ERT.
Documentation to follow.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34591 a592a061-630c-0410-9148-cb99ea01b6c8
elsewhere, but I actually don't know why I put them here in the first
place.
The tex2lyx stuff allows us not to wrap the calls to
frontend::Alert::warning in "#ifdef TEX2LYX" blocks.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34192 a592a061-630c-0410-9148-cb99ea01b6c8
allows for layout- or module-level customization of the display in the
citation dialog and of the XHTML bibliography output.
There is more of this to come, by the way. The next step is to allow
macros. That will make it easier to deal with translation issues, which
ought to be the final step.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33920 a592a061-630c-0410-9148-cb99ea01b6c8
class that is unavailable.
In addition, add some explanations about this kind of thing to the User
Guide, to which we can direct the user in the error message. This kind
of question comes up often enough that we need something right up front
about it. It isn't enough to have it in the other manuals.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33864 a592a061-630c-0410-9148-cb99ea01b6c8
indicates what prefix to use when constructing formatted references.
Documentation to follow.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33784 a592a061-630c-0410-9148-cb99ea01b6c8
This patch introduces a "ListCommand" tag for Float layout. This tag
defines the command used to generate a list of such floats, in the cases
where float.sty is not used (i.e., where NeedsFloatPkg is true). We were
previously hardcoding the commands \listoftables and \listoffigures. But
in other cases, such as achemso.layout, which defines lists of schemes,
charts, etc, we could not output such lists.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33633 a592a061-630c-0410-9148-cb99ea01b6c8
list revealed that the former is confusing to people. The latter
indicates more clearly what the tag does.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33626 a592a061-630c-0410-9148-cb99ea01b6c8
InsetLayout, per Jurgen's suggestion, so that insets can be told to
display an abbreviated form of their content when closed.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32575 a592a061-630c-0410-9148-cb99ea01b6c8
NOTE: Again, I'm not increasing the layout format, though I have added
a couple new things here. If anyone thinks I really do need to do that,
then I will. But I don't think it's necessary, as no-one ought to be using
this.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30178 a592a061-630c-0410-9148-cb99ea01b6c8
only sweave is supported (for building documentation, not programs).
Layout files allow a new OutputFormat tag
Modules can be conditionned on a feature of the type from->to, indicating that
it should be possible to convert from format 'from' to format 'to'.
Layout format incremented to 15.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29874 a592a061-630c-0410-9148-cb99ea01b6c8
Don't go into an endless loop if layout2layout cannot produce the desired file format.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28529 a592a061-630c-0410-9148-cb99ea01b6c8
available to tex2lyx. The point is to move the crucial routines that
deal with modules out of BufferParams.cpp, which tex2lyx does not have,
and into TextClass.cpp, which it does.
This is all cleanup that makes a lot of sense independently.
Note that LayoutModuleList will shortly become a real class.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28456 a592a061-630c-0410-9148-cb99ea01b6c8
Implement infrastructure to add translations to layout files and translate one .inc file.
Some others are missing.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28356 a592a061-630c-0410-9148-cb99ea01b6c8
overwrites the existing definition, instead of updating it, as our Style
declarations do. This patch fixes this behavior, so that e.g.:
#\DeclareLyXModule{ERT}
#DescriptionBegin
#Make ERT Classic
#DescriptionEnd
Format 11
InsetLayout ERT
Decoration classic
End
will do as advertised.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27900 a592a061-630c-0410-9148-cb99ea01b6c8
update an existing counter rather than overwrite it.
This turns out to be more complicated than it might seem. There are two
large parts to the patch. One moves the counter read routine out of TextClass
and into the Counter and Counters classes. The other changes the syntax of
counters from:
Counter
Name whatever
....
to:
Counter whatever
....
This allows us to get the name of the counter right away, so we can decide
whether it is an old one or a new one. So the layout format had to be
changed (again), with corresponding layout2layout code.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26779 a592a061-630c-0410-9148-cb99ea01b6c8
so that the allowParagraphCustomization() and forcePlainLayout() features can
be independently controlled.
At present, these are active only for InsetFlex. In future, they should be made
active for InsetCollapsable, in general.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26757 a592a061-630c-0410-9148-cb99ea01b6c8
as the former could be confusing. It's not really empty....
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26027 a592a061-630c-0410-9148-cb99ea01b6c8
theorems-ams module, which is what most users will want. A later commit will allow users also
to "exclude" this module, in case they wanted to do that.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25880 a592a061-630c-0410-9148-cb99ea01b6c8
* src/TextClass.h[.cpp]: add addLayoutIfNeeded() and createDefaultLayout()
* src/Layout.h[.cpp]: add unknown_ to mark if a layout is a default layout for an unknown one.
* src/LayoutFile.cpp: add addDefaultClass and change addLayoutFile to addLocalLayout.
* src/Text.cpp: add unknown layouts that are not recognizable by a new textclass.
* src/frontends/qt4/GuiToolbar.cpp: display (unknown) for unknown layouts.
* src/frontends/qt4/GuiDocument.cpp: restore 'browse layout' button.
* src/frontends/qt4/ui/LaTeXUi.ui: restore 'browse layout' button.
* src/CutAndPaste.cpp: do not convert unknown layouts from pasted text
* src/BufferParams.cpp: add a default textclass when a document with unknown textclass is loaded.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25555 a592a061-630c-0410-9148-cb99ea01b6c8
However, I am not really sure we should care about these. It's not much
difference, except that application shutdown in slower after 'fixing'
them.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24305 a592a061-630c-0410-9148-cb99ea01b6c8
Abdel suggested it might be worth pimpl'ing the FloatList and Counter objects, to get the header dependencies back down.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23530 a592a061-630c-0410-9148-cb99ea01b6c8
We take the opportunity to make TextClass objects noncopyable, nonassignable, etc.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23526 a592a061-630c-0410-9148-cb99ea01b6c8
At this point, there are no simple TextClass objects in the main LyX code, and it is impossible to create them, since the TextClass constructor is protected. Only LayoutFile and DocumentClass objects can be constructed, and for the most part these are constructed only by their respective containers: BaseClassList and DocumentClassBundle. There is an exception: LayoutFile does have a public default constructor, but if anyone knows how to make it go away, please do.
There will be one or two more commits along these lines, but these will be simple renamings. For example, BaseClassList should be LayoutFileList.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23343 a592a061-630c-0410-9148-cb99ea01b6c8
I've left the typedef in TextClassPtr.h. At the moment, it's kind of silly. But I've left it mostly because it helps to identify where the TextClass's stored in the TextClassBundle are used, and maybe it'd be worth having some sort of strong typedef like the one for BaseClassIndex here.
I need to check whether the textClass_ member of InsetCollapsable is needed now. I think not.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23232 a592a061-630c-0410-9148-cb99ea01b6c8
Here, we move TextClass::readInsetLayout() to InsetLayout::read().
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23117 a592a061-630c-0410-9148-cb99ea01b6c8
In this commit, we do the minimal amount of work necessary to protect our data.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23116 a592a061-630c-0410-9148-cb99ea01b6c8
NOTE: Some cleanup is needed here, and I'll do it shortly. Doing it properly, though, requires making InsetLayout a proper class. (At the moment, it's just a C-style struct.) That should be committed separately.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23103 a592a061-630c-0410-9148-cb99ea01b6c8
from the one posted to the list.
The basic idea has two parts. First, we hard code an "empty layout"
(called PlainLayout, for want of a better name) in TextClass and read it
before doing anything else. It can therefore be customized by classes,
if they want---say, to make it left-aligned. Second, InsetText's are
divided into three types: (i) normal ones, that use the "default" layout
defined by the text class; (ii) highly restrictive ones, such as ERT and
(not quite an inset) table cells, which demand the empty layout; (iii)
middling ones, which default to an empty layout and use the empty layout
in place of the default. (This is so we don't get the same problem we
had with ERT in e.g. footnotes.) The type of inset is signaled by new
methods InsetText::forceEmptyLayout() and InsetText::useEmptyLayout().
(The latter might better be called: useEmptyLayoutInsteadOfDefault(),
but that's silly.) The old InsetText::forceDefaultParagraphs() has been
split into these, plus a new method InsetText::allowParagraphCustomization().
A lot of the changes just adapt to this change.
The other big change is in GuiToolbar: We want to show LyXDefault and
the "default" layout only when they're active.
There are a handful of places where I'm not entirely sure whether we
should be using forceEmptyLayout or !allowParagraphCustomization() or
both. The InsetCaption is one of these. These places, and some others,
are marked with FIXMEs, so I'd appreciate it if people would search
through the patch and let me know whether these need changing. If they
don't, the FIXMEs can be deleted.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22966 a592a061-630c-0410-9148-cb99ea01b6c8
See in particular comment 6.
We forcibly load stdinsets.inc unless the TextClass declares:
Provides stdinsets 1
There isn't really any such package, of course. We're just using this
(per a suggestion by JMarc) to say we've loaded relevant info about the
standard insets.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22802 a592a061-630c-0410-9148-cb99ea01b6c8
* src/TextClass{cpp,h}:
- implement Requires tag for class and InsetLayout.
* src/Layout.{cpp,h}:
- implement Requires tag for layouts.
- increase layouts format to 6.
* src/Paragraph.cpp:
- request required features for paragraph layouts.
* src/LaTeXFeatures.cpp:
- add some packages needed by modules.
- remove Preamble method for InsetLayout. This is now done
in InsetFlex::validate.
* src/BufferParams.cpp (validate):
- request required features for the class.
* src/insets/InsetLayout.h:
- new member "requires".
* src/insets/InsetFlex.{cpp,h}:
- implement validate method and request required features and preamble snippets.
* lib/layouts/*.{layout,module,inc}:
- increase layouts format to 6.
- use Requires tags in some modules (more can be done later).
* lib/doc/Customization.lyx:
- document Requires tag.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22414 a592a061-630c-0410-9148-cb99ea01b6c8
Now support/* should have no dependencies on src/* anymore.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21851 a592a061-630c-0410-9148-cb99ea01b6c8
introduce isReadableDirectory
replace isReadable by either isReadableFile or isReadableDirectory
remove isReadable
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21769 a592a061-630c-0410-9148-cb99ea01b6c8
- Getting rid of some unneeded init() methods.
- InsetCollapsable::layout_ is now a const pointer.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21396 a592a061-630c-0410-9148-cb99ea01b6c8
* Font::FontBits -> FontInfo
* Font::FONT_XXX -> all enums transfered to FontEnums.h and renamed to FontXxx
I've replaced Font uses with FontInfo were the language() member was not needed, basically all draw() and metrics methods. There's one problematic cases with InsetQuotes which I solved by taking the Buffer main language.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21240 a592a061-630c-0410-9148-cb99ea01b6c8
(maily move layout related enums into a header of there own to remov
include dependencies, alos rename a few things)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20598 a592a061-630c-0410-9148-cb99ea01b6c8
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 backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
- leftMargin, rightMargin, labelsep, labelindent, parindent are now docstring.
* TextClass.h:
- leftMargin() and rightMargin(): now return a docstring.
All other files: adapt to change above.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19633 a592a061-630c-0410-9148-cb99ea01b6c8
* src/Counters.cpp (Counter::labelString/labelStringAppendix): new
accessors for two new variables
(Counter::setMaster): removed
(Counter::Counter): add a version with arguments.
(Counters::newCounter): add relevant arguments; allow to redefine
an existing counter.
(Counters::reset): reset the current float float.
(Counters::theCounter): return a representation of a given counter
using its labelstring or by default \themaster.\arabic{counter}.
Handle appendix too.
(Counters::counterLabel): add support for macros of the form
\thecounter.
* src/TextClass.cpp (readCounters): also read LabelString and
LabelStringAppendix.
(readFloats): allow to update an existing float; create the
counter associated with the float.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19602 a592a061-630c-0410-9148-cb99ea01b6c8
* Layout.h:
- name_, obsoleted_by_, depends_on_ are now docstrings.
All other changes results from the above string -> docstring changes. In particular, we now try to translate the layout names only if possible (i.e. if they are ASCII only).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19042 a592a061-630c-0410-9148-cb99ea01b6c8