InsetRef::addTocToc(): add an entry for the referenced label if not already present. Next step is to rebuild the Toc in InsetLabel::addTocToc() for this case.
Bug fix: Adjustment for multiple reference to the same label. The solution is still not optimal as any reference to a label after the reference will not get notice. This is because addToToc() is called iteratively through the document so the toc entry for the label is still not created... any idea to fix this is welcome.
Add list of labels. If I have the time and energy the next step is to cleanup the cross-reference lookup so that we can integrate the cross references in the tree, hence the name "Labels and References".
Get rid of 'quitting' global variable. It is not needed anymore because all windows are closed in order now and the frontend/core is properly separated.
* GuiView::closeEvent(): adjust buffer closing WRT multi-view and child documents.
- a child document is kept loaded in any case. It is saved if needed before being hidden.
- a document which is not viewed in another window is closed now.
- we do nothing for documents that are also viewed in another window. There is two FIXME related to this last item in the code:
// FIXME 1: should we put an alert box here that the buffer
// is viewed elsewhere?
// FIXME 2: should we try to save this buffer in any case?
//saveBuffer(b);
* paragraph support for the global word list. To make it buffer
dependent, we need the buffer pointer. In fact we already have a
pointer to the text inset. So as soon as inset know their buffer we
can easily switch to a buffer local word list.
* there might be missing some more places to update the words from a
buffer, like for example after backspace or more important when the
cursor leaves a paragraph.
Richard Heck [Mon, 25 Feb 2008 22:13:45 +0000 (22:13 +0000)]
Per Abdel's suggestion that we focus on bug-fixing at this point, this will be the last patch in this series for a bit. But I wanted to get this done before I forget what it is I was doing, so here it is.
The idea behind this patch is to make real key-value support for InsetCommand parameters possible. This should be particularly useful for the listings version of InsetInclude, though we would need some kind of UI for it before it would really be helpful. (See below for some thoughts.) This doesn't substantially change anything else, though some things do get re-arranged a bit.
Basically, the idea is this. First, we introduce a whole range of parameter types: Normal LaTeX optional and required parameters; ones for LyX's internal use (like embed); and finally, in connection with keyval, ones that represent keys and ones that represent optional and required arguments where the keyval stuff will appear. (I'm assuming here that there will always be exactly one of those, and that it will accept only keyval-type material.) The parameters themselves are stored in a map, so it's really only the output routines that need to care about the different types of parameters.
Regarding the frontend, it seems to me that something like the following would work:
(i) scan the parameter list for LATEX_KEY type parameters
(ii) the dialog will have a series of lines, each of which has a combo box listing the acceptable keys and a QLineEdit for entering its value, as well as a "delete" button of some sort for removing this key and its value
(iii) there should be an "add line" button to add a new line, activated only when all other lines are filled with values
Probably not even too hard.
Richard Heck [Mon, 25 Feb 2008 19:31:31 +0000 (19:31 +0000)]
Replace boost::shared_ptr<TextClass> with a global cache of sorts of the TextClass's used by Buffers---or, more strictly, constructed by BufferParams::makeTextClass(). The action is in TextClass.{h,cpp}.
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.
* high performance text completion with weighted btrees to get pseudo
random-access (i.e. O(log n)) to the n-th element in a list/set. Try
it with 1000000 keys ... no problem.
Richard Heck [Sun, 24 Feb 2008 16:29:40 +0000 (16:29 +0000)]
Restore Andre's TextClassIndex, but now in the form of BaseClassIndex. It seems worth distinguishing more clearly than we do at the moment between TextClass's and BaseClass's. The latter correspond to *.layout files; the former are based upon *.layout files but may be modified by modules.
Richard Heck [Sun, 24 Feb 2008 14:59:23 +0000 (14:59 +0000)]
Revert 23154.
Sorry, Andre, but this broke not only the modules stuff but the general handling of TextClasses. I'm not opposed to doing this sort of thing, but it's going to be a little more complicated. I'll do it when I get a bit of time, or I can explain what the issue is here if you want to do it.
I'll separately re-commit some of the cleanup here.
Dov Feldstern [Sun, 24 Feb 2008 01:45:51 +0000 (01:45 +0000)]
fix a visual cursor edge-case:
Only when an LTR paragraph *ends with* an RTL chunk of text, movement was
incorrect in two ways:
1. After moving into the pargraph from the end, and then trying to move towards
the beginning of the paragraph, the cursor would immediately jump to the
previous pargraph.
2. If the cursor were placed inside the RTL text, and then we would move left
towards the beginning of the paragraph, upon reaching the end (beginning?) of
the RTL chunk, cursor would jump to the end of the paragraph, and then continue
as in (1).
(Same thing, of course, with the reverse situation, i.e., RTL paragraph ending
with LTR text).
Richard Heck [Sat, 23 Feb 2008 22:01:02 +0000 (22:01 +0000)]
After a hiatus, I'm returning to the rewrite of InsetCommandParams, the purpose of all of this being to make things more flexible, with the ultimate goal being biblatex support and a kind of InsetCommandFlex that will allow user-definable such things. The next step, really, is to fix up CiteEngine so that we can have different sets of parameters for InsetCitation depending upon what engine is in use. (Something like this also needs doing with InsetInclude.)
This patch reworks the machinery that holds information about what parameters there are and what their values are. There's enough flexibility here that true keyval support ought to be fairly easy at this point. I'll have a peek at that shortly.