The changes are essentially of three types.
First, the std::maps previously used here for storing BibTeX data have become full-fledged classes and so what were previously just a bunch of functions have now become methods of these new classes. This leads to a lot of minor changes in other files, to adapt to the new signature. The changes in insets/ are mostly of this kind.
Second, there are some slightly more substantial changes in src/insets/InsetBibtex.cpp. We now store lists of the field names and entry types that have been used.
Finally, there are the changes to the citation UI. These are mostly straightforward, though adding the new functionality exposed some inadequacies in the previous code that also had to be fixed.
One other change: BibTeX keys are now docstring. This solves some Unicode issues.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19657 a592a061-630c-0410-9148-cb99ea01b6c8
a structure representing field->value instead of just a single string with
all the data. The data structures are defined in src/Biblio_typedefs.h, and
the main changes are to the parser code in src/insets/InsetBibtex.cpp.
-src/Biblio_typedefs.h
Contains typedefs for new representation. Separating them out limits how much
gets #include'd by other files, and also resolves a circularity problem with
Buffer.h.
-src/Biblio.{h,cpp}
Signature changes and massive simplifications to routines that report
BibTeX data, since we now have an articulate representation.
-src/insets/InsetBibtex.{h,cpp}
Re-write the parser code so we store a key->value map of the BibTeX data
rather than just one long string. This is the main work.
-src/frontends/controllers/ControlCitation.{h,cpp}
-src/insets/InsetBibitem.{h,cpp}
-src/insets/InsetCitation.cpp
Adaptations and simplifications.
-src/insets/Inset.h
-src/Buffer.{h,cpp}
-src/insets/InsetInclude.{h,cpp}
Signature changes.
-src/Makefile.am
-development/scons/scons_manifest.py
Add src/Biblio_typedefs.h
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19598 a592a061-630c-0410-9148-cb99ea01b6c8
* Biblio.cpp: fillWithBibKeys(): ditto.
* InsetInclude.cpp: loadIfNeeded(): set the parent name in any case.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19586 a592a061-630c-0410-9148-cb99ea01b6c8
information is acquired. This involves (i) moving the bulk of fillWithBibKeys()
into Biblio.cpp, (ii) introducing a virtual method Inset::fillWithBibKeys() that,
by default, does nothing, and (iii) over-riding this method in the insets that do
need to do something.
This is all preparatory for a more substantial re-working of the BibTex code,
which should follow shortly.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19565 a592a061-630c-0410-9148-cb99ea01b6c8
* InsetInclude: loadIfNeeded()
- make it non anonymous (used in loadChildDocuments()).
- now return the loaded buffer.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19520 a592a061-630c-0410-9148-cb99ea01b6c8
* buffer_funcs.cpp (updateLabels): new function taking a buffer and
a ParIterator as arguments. This one is used to update labels
into an InsetText. Cleanup the code to reset depth. Call setLabel
for each paragraph, and then updateLabel on each inset it contains.
(setCaptionLabels, setCaptions): removed.
(setLabel): use Counters::current_float to make caption paragraphs
labels.
* insets/Inset.h (updateLabels): new virtual method, empty by
default; this numbers the inset itself (if relevant) and then all
the paragraphs it may contain.
* insets/InsetText.cpp (updateLabels): basically calls
lyx::updateLabels from buffer_func.cpp.
* insets/InsetCaption.cpp (addToToc): use the label constructed by
updateLabels.
(computeFullLabel): removed.
(metrics, plaintext): don't use computeFullLabel.
(updateLabels): new method; set the label from
Counters::current_float.
* insets/InsetWrap.cpp (updateLabels):
* insets/InsetFloat.cpp (updateLabel): new method; sets
Counters::current_float to the float type.
* insets/InsetBranch.cpp (updateLabels): new method; the numbering
is reset afterwards if the branch is inactive. (bug 2671)
* insets/InsetNote.cpp (updateLabels): new method; the numbering
is reset after the underlying InsetText has been numbered.
(bug 2671)
* insets/InsetTabular.cpp (updateLabels): new method (also handles
longtable)
* insets/InsetListings.cpp (updateLabels): new method; mimics what
is done for Floats (although Listings are not floats technically)
* insets/InsetInclude.cpp (getScreenLabel): in the listings case,
use the computed label.
(updateLabels): new method; that either renumbers the child
document or number the current listing.
* LyXFunc.cpp (menuNew): do not updateLabels on empty documents
(why do we do that at all?)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19482 a592a061-630c-0410-9148-cb99ea01b6c8
Fix Bug 3860: Toc crash when loading a child documents.
* BufferView::loadLyXFile(): simplify, transfer last part to
LyXView::loadLyXFile().
Change return value to Buffer created by load (or 0 if none).
Ultimately, this should all be moved to buffer_funcs.cpp, as it is no
longer needed here.
* Buffer::setParentName(): small fix to avoid recursive includes.
* LyXView:
- setBuffer(): properly update the labels and the Toc if this is [LOAD Child
Document] command. Move buffer connection and disconnection, simplifying
earlier code.
- loadLyXFile(): get some code from BufferView::loadLyXFile() and from
LyXFunc::LFUN_BUFFER_CHILD_OPEN, properly handle the child document case.
There's a lot of overlap with setBuffer() here. This needs cleaning.
* LyXFunc: add optional argument to LFUN_BUFFER_CHILD_OPEN to indicate if
the document is being opened by LyX itself rather than the user (as on
View>DVI, for example).
* LyX: adapt to loadLyXFile() API changes.
* insets/InsetInclude: use LFUN_BUFFER_CHILD_OPEN rather than calling
loadLyXFile() directly. Make use of new optional argument.
With this in place, the only thing missing for proper multipart document support is to automatically update the parent Buffer when switching from the parent Buffer. This would be very useful when you work with multiple document sharing the same child documents (as I often do).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18825 a592a061-630c-0410-9148-cb99ea01b6c8
that were opened for possible included LyX files need to be closed if those
files cannot be loaded, for example. A bit more work was needed to allow a
LyX file to include itself as a verbatim or listings without trying to load
itself and without relying upon loadIfNeeded() to report the problem.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18494 a592a061-630c-0410-9148-cb99ea01b6c8
* insets/InsetExternal.cpp (doDispatch):
* insets/InsetGraphics.cpp (doDispatch):
* insets/InsetInclude.cpp (doDispatch):
* insets/InsetCommand.cpp (doDispatch):
* insets/InsetVSpace.cpp (doDispatch): do not open dialog if a
selection is set.
* insets/InsetRef.cpp (doDispatch):
* insets/InsetCharStyle.cpp (doDispatch): act on mouse release, not
mouse press.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18473 a592a061-630c-0410-9148-cb99ea01b6c8
bug 3659 (crash when file contains only an InsetInclude).
Added checks for self-inclusion. The reason this is not a complete fix is that
recursive input could arise from something other than self-inclusion. Checking
for that will be much more complicated, however.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18445 a592a061-630c-0410-9148-cb99ea01b6c8
* src/insets/InsetListingsParams.{cpp,h}
- implement getParamValue that returns the value of a listings param
* src/insets/InsetInclude.cpp:
- (getLabelList): pass listings label to the list, if available
- doDispatch: implement changeRefsIfUnique for listing labels
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18405 a592a061-630c-0410-9148-cb99ea01b6c8
Please note that method B_ (translate text to buffer language) is presently broken (at least on Windows)!
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18143 a592a061-630c-0410-9148-cb99ea01b6c8