* src/frontends/qt4/GuiBibtex.{cpp,h}:
* src/frontends/qt4/ui/BibtexUi.ui:
- add buttons to move databases up and down.
Patch from Horst Schirmeier (permission: http://marc.info/?l=lyx-devel&m=120009631506298&w=2)
Richard Heck [Sat, 12 Jan 2008 06:09:27 +0000 (06:09 +0000)]
Documentation updates related to modules and the AMS classes. Note that, with the modularization of the theorem environments, we can now actually use them in Extended->AMSLaTeX to show the user what they look like.
Richard Heck [Sat, 12 Jan 2008 04:28:12 +0000 (04:28 +0000)]
This commit changes the way individual LyXModule's are represented, both internally and in the .lyx files. The earlier version represented them by their `descriptive name', e.g., "Endnote" or "Theorems (AMS)", these being the same names used in the UI. This was a mistake, as becomes readily apparent when one starts to think about translating these strings. The modules ought to be represented by their filename, without the extension, just as TextClass's are.
The changes that accomplish this part are in ModuleList.{h,cpp}, configure.py, and the *.module files themselves. This is a format change, and the lyx2lyx is in those files.
By itself, that change would not be major, except for the fact that we do not want the module to be represented in the UI by its filename---e.g., theorems-std---but rather by a descriptive name, such as "Theorems". But that change turns out to be wholly non-trivial. The mechanism for choosing modules was the same as---indeed, was borrowed from---that in GuiCitation: You get a list of modules, and choosing them involves moving strings from one QListView to another. The models underlying these views are just QStringListModels, which means that, when you want to know what modules have been selected, you see what strings are in the "selected" QListView. But these are just the descriptive names, and we can't look up a module by its descriptive name if it's been translated. That, indeed, was the whole point of the change to the new representation.
So, we need a more complicated model underlying the QListView, one that will pair an identifying string---the filename minus the extension, in this case---with each item. This turns out not to be terribly difficult, though it took rather a while for me to understand why it's not difficult. There are two parts:
(i) GuiSelectionManger gets re-written to use any QAbstractListModel, not just a QStringListModel. This actually seems to improve the code, independently.
(ii) We then subclass QAbstractListModel to get the associated ID string, using the Qt::UserRole slot associated with each item to store its ID. This would be almost completely trivial if QAbstractListItem::itemData() included the QVariant associated with this role, but it doesn't, so there are some additional hoops through which to jump.
The new model, a GuiIdListModel, is defined in the files by that name. The changes in GuiSelectionManger.{h,cpp} make it more abstract; the changes in GuiDocument.{h,cpp} adapt it to the new framework.
I've also updated the module documenation to accord with this change.
* src/Buffer.cpp:
- format is up to 312.
* src/LaTeXFeatures.cpp:
- add rotfloat.
* src/Insets/InsetFloat.cpp:
- handle starred and generic sideways floats.
* src/frontends/qt4/FloatPlacement.{cpp,h}:
- adjust GUI to the new features.
* lib/chkconfig.ltx:
- add rotfloat
* lib/lyx2lyx/LyX.py:
* lib/lyx2lyx/lyx_1_6.py:
- add reversion methods for new floats
* lib/lyx2lyx/lyx_1_4.py:
- add proper reversion method for sideways floats (this was missing).
Bo Peng [Thu, 10 Jan 2008 23:39:58 +0000 (23:39 +0000)]
Embedding: saving inzip name to .lyx file so that embedded files can always be found under different operating systems (even lyx versions). yet to be tested under windows
Richard Heck [Thu, 10 Jan 2008 04:58:20 +0000 (04:58 +0000)]
Modularization of the AMS classes, and the theorem environments generally.
This is Part I: The changes to the layout files and modules. Part II, still
to come, will involve lyx2lyx to help people who were using the older classes.
Richard Heck [Wed, 9 Jan 2008 18:51:02 +0000 (18:51 +0000)]
This commit adds some new functionality to the modules stuff. In particular, it introduces the concept of "required" and "excluded" modules: A given module may require one of some list of modules, or it may be incompatible with some other modules. (Complex Boolean combinations are not supported!!) These facts can be noted in the module file, and the UI responds appropriately: Required and excluded modules are noted in the description, and the "Add" button is enabled only if at least one of the required modules has already been selected and no excluded module is selected. Getting this to work involved a fair bit of cleanup of the existing code---including ways Angus, I think, had already pointed out were required---and also involved changing the syntax of the headers of the module files, but in ways that are probably best anyway.
None of the extant modules require any other modules, but the Theorem modules all exclude one another. (See the screenshot.) When I modularize the AMS classes---that is the next task---we'll have requires.
Bo Peng [Tue, 8 Jan 2008 17:02:09 +0000 (17:02 +0000)]
Embedding: add embedding support for InsetBibtex. (params["embed"] is added, use EmbeddedFileList instead of FileNameList for bibtex handling, use checkable items in GuiBibtex)
*** Requires tag for classes, layouts and custom insets ***
* 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).
Bo Peng [Mon, 7 Jan 2008 03:34:21 +0000 (03:34 +0000)]
Embedding: After another round of EmbeddedFiles changes, embedded figures should more or less work now.
* src/insets/InsetExternal.cpp: fix compiling. (Does not work yet)
* src/insets/InsetGraphics.cpp: use latexFilename to produce output.
* src/insets/InsetGraphicsParams.cpp: use availableFile to show preview.
* src/EmbeddedFiles.h|cpp: More things are moved from EmbeddedFiles to EmbeddedFile
* src/frontends/qt4/GuiGraphics.cpp: remove embeddable-related operations.
* src/support/FileName.h: make isReadableFile virtual