Commit Graph

28 Commits

Author SHA1 Message Date
Günter Milde
06ae6e118c Fix small typo. 2019-05-14 16:39:35 +02:00
Juergen Spitzmueller
b60259fbe1 Add system/local icon to available modules list
Also markup modules with missing requirements (like we do for layouts)
2019-04-20 09:28:46 +02:00
Juergen Spitzmueller
b5af05b4a7 Make module categories (almost) great again
The category tag was rarely used and thus not very useful. This adds
categorization to most modules (the rest will follow) and uses the
\DeclareCategory tag we use in layouts rather than the extra syntax
we used in modules. Categories are now added to the po files and
translated.

Note that this is work in progress: the current categories are still
subject to change.

The ultimate goal of this is to sort the modules in the GUI by category
as we do with layouts, examples and templates (and add a filter to search
for specific modules)

As it is now (with the many modules we accumulated), the module selector
is not really usable anymore. If you don't happen to know how exactly a
module is named, selecting a module is really a PITA.
2019-04-04 18:43:29 +02:00
Christian Ridderström
e30f3d76d2 Bulk cleanup/fix incorrect annotation at the end of namespaces.
This commit does a bulk fix of incorrect annotations (comments) at the
end of namespaces.

The commit was generated by initially running clang-format, and then
from the diff of the result extracting the hunks corresponding to
fixes of namespace comments. The changes being applied and all the
results have been manually reviewed. The source code successfully
builds on macOS.

Further details on the steps below, in case they're of interest to
someone else in the future.

1. Checkout a fresh and up to date version of src/

    git pull && git checkout -- src && git status src

2. Ensure there's a suitable .clang-format in place, i.e. with options
   to fix the comment at the end of namespaces, including:

    FixNamespaceComments:                           true
    SpacesBeforeTrailingComments:                   1

and that clang-format is >= 5.0.0, by doing e.g.:

    clang-format -dump-config | grep Comments:
    clang-format --version

3. Apply clang-format to the source:

    clang-format -i $(find src -name "*.cpp" -or -name "*.h")

4. Create and filter out hunks related to fixing the namespace

    git diff -U0 src > tmp.patch
    grepdiff '^} // namespace' --output-matching=hunk tmp.patch  > fix_namespace.patch

5. Filter out hunks corresponding to simple fixes into to a separate patch:

    pcregrep -M -e '^diff[^\n]+\nindex[^\n]+\n--- [^\n]+\n\+\+\+ [^\n]+\n'  \
        -e '^@@ -[0-9]+ \+[0-9]+ @@[^\n]*\n-\}[^\n]*\n\+\}[^\n]*\n'         \
        fix_namespace.patch > fix_namespace_simple.patch

6. Manually review the simple patch and then apply it, after first
   restoring the source.

    git checkout -- src
    patch -p1 < fix_namespace_simple.path

7. Manually review the (simple) changes and then stage the changes

    git diff src
    git add src

8. Again apply clang-format and filter out hunks related to any
   remaining fixes to the namespace, this time filter with more
   context. There will be fewer hunks as all the simple cases have
   already been handled:

    clang-format -i $(find src -name "*.cpp" -or -name "*.h")
    git diff src > tmp.patch
    grepdiff '^} // namespace' --output-matching=hunk tmp.patch  > fix_namespace2.patch

9. Manually review/edit the resulting patch file to remove hunks for files
   which need to be dealt with manually, noting the file names and
   line numbers. Then restore files to as before applying clang-format
   and apply the patch:

    git checkout src
    patch -p1 < fix_namespace2.patch

10. Manually fix the files noted in the previous step. Stage files,
    review changes and commit.
2017-07-23 13:11:54 +02:00
Pavel Sanda
154319d063 Remove some header leftovers based on Scott's script hints.
False positive rate of hints is quite high. Although the includes can be
technically removed (due to other includes) they logically belong to the
header.
2013-05-02 00:30:16 -07:00
Vincent van Ravesteijn
281799d342 Fix typo
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40910 a592a061-630c-0410-9148-cb99ea01b6c8
2012-03-10 21:45:01 +00:00
Julien Rioux
488b9ae3a2 Whitespace only.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40886 a592a061-630c-0410-9148-cb99ea01b6c8
2012-03-08 16:43:02 +00:00
Richard Heck
28e08b23e2 Fix bug #7044: Better error messages when modules are unavailable. Patch
from Julien Rioux, modified by me.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37207 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-13 21:19:14 +00:00
Richard Heck
56146a9346 Constify a bunch of stuff that can be const.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31037 a592a061-630c-0410-9148-cb99ea01b6c8
2009-08-14 15:46:10 +00:00
Richard Heck
ea0501025e s/moduleList/theModuleList/ for style purposes.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31036 a592a061-630c-0410-9148-cb99ea01b6c8
2009-08-14 15:37:34 +00:00
Richard Heck
2a25d7039f Style.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31034 a592a061-630c-0410-9148-cb99ea01b6c8
2009-08-14 15:28:06 +00:00
Richard Heck
7035f4cabb Module categories, for Pavel.
Do free free to change the categories. I just did these ones for testing, really.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31033 a592a061-630c-0410-9148-cb99ea01b6c8
2009-08-14 15:20:11 +00:00
Richard Heck
00f5adcfe3 Rename a routine.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28559 a592a061-630c-0410-9148-cb99ea01b6c8
2009-02-19 17:24:37 +00:00
Richard Heck
9dfac74265 This patch introduces ProvidesModule and ExcludesModule layout tags.
See http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg145129.html.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27041 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-23 00:27:03 +00:00
Richard Heck
5537e8a6b5 Add some module related comments.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27002 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-20 21:11:49 +00:00
Richard Heck
a940cc3f6b The last bit of cleanup: Make checking for exclusions a bit easier.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26924 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-16 17:21:13 +00:00
Richard Heck
d5d665482e 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.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22501 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-12 04:28:12 +00:00
Richard Heck
d226da1559 Fix comment.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22488 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-11 04:44:56 +00:00
Richard Heck
7c28905b17 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.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22456 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-09 18:51:02 +00:00
Richard Heck
0fce3ff6bd Pass by const reference. Thanks Andre and Peter.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22405 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-06 18:17:25 +00:00
Richard Heck
8f1153820a Thanks, Angus.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22397 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-06 16:44:51 +00:00
Richard Heck
4675141344 Implement isAvaiable in ModuleList.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22385 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-05 16:49:49 +00:00
Abdelrazak Younes
f4e787e982 Header cleanup.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21964 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-05 09:23:19 +00:00
André Pönitz
5c4a20fe04 I'll find a solution for the 'dirList problem', Abdel.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21884 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-30 20:57:53 +00:00
André Pönitz
be85a6fcb5 --boost; style issues.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21497 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-07 21:52:11 +00:00
André Pönitz
fad47c0fe0 boost/utility -> boost/noncopyable
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20608 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-30 15:47:00 +00:00
Richard Heck
7f17f13bfc Get package things working with modules prior to UI patch.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19900 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 22:59:25 +00:00
Richard Heck
8a947f63da 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 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
2007-08-29 17:59:49 +00:00