commit 7f125f62d2cfeacdb820aee5ef39f86eb82db3ae
Author: Pavel Sanda <sa...@lyx.org>
Date:   Thu May 23 15:13:27 2019 +0200

    Introduce doc preference for line numbering.
    
    https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg208781.html
---
 development/FORMAT                  |    3 ++
 lib/lyx2lyx/lyx_2_4.py              |   13 +++++++++++-
 src/BufferParams.cpp                |   20 ++++++++++++++++++
 src/BufferParams.h                  |    4 +++
 src/frontends/qt4/GuiDocument.cpp   |   10 +++++++++
 src/frontends/qt4/ui/NumberingUi.ui |   38 +++++++++++++++++++++++++++++++++++
 src/tex2lyx/TODO.txt                |    1 +
 src/version.h                       |    4 +-
 8 files changed, 90 insertions(+), 3 deletions(-)

diff --git a/development/FORMAT b/development/FORMAT
index fd2b6c4..31f9ed2 100644
--- a/development/FORMAT
+++ b/development/FORMAT
@@ -7,6 +7,9 @@ changes happened in particular if possible. A good example 
would be
 
 -----------------------
 
+2019-05-21 Pavel Sanda <sa...@lyx.org>
+       * Format incremented to 575: add line numbering via lineno package
+
 2019-04-16  Günter Milde <mi...@lyx.org>
         * Format incremented to 574: Ruby inset, fixes for Japanese.
 
diff --git a/lib/lyx2lyx/lyx_2_4.py b/lib/lyx2lyx/lyx_2_4.py
index 5649085..866bbb2 100644
--- a/lib/lyx2lyx/lyx_2_4.py
+++ b/lib/lyx2lyx/lyx_2_4.py
@@ -1694,6 +1694,15 @@ def revert_utf8_japanese(document):
     if lang == "japanese-cjk":
         document.set_parameter("inputencoding", "utf8-cjk")
 
+def revert_lineno(document):
+    " Remove lineno package use."
+    i = find_token(document.header, "\\use_lineno", 0)
+    if i != -1:
+        del document.header[i]
+    i = find_token(document.header, "\\lineno_options", 0)
+    if i != -1:
+        del document.header[i]
+
 
 ##
 # Conversion hub
@@ -1731,9 +1740,11 @@ convert = [
            [572, [convert_notoFonts]],  # Added options thin, light, 
extralight for Noto
            [573, [convert_inputencoding_namechange]],
            [574, [convert_ruby_module, convert_utf8_japanese]],
+           [575, []],
           ]
 
-revert =  [[573, [revert_ruby_module, revert_utf8_japanese]],
+revert =  [[574, [revert_lineno]],
+           [573, [revert_ruby_module, revert_utf8_japanese]],
            [572, [revert_inputencoding_namechange]],
            [571, [revert_notoFonts]],
            [570, [revert_cmidruletrimming]],
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index 523e5c9..dd7d950 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -475,6 +475,7 @@ BufferParams::BufferParams()
        output_sync = false;
        use_refstyle = true;
        use_minted = false;
+       use_lineno = false;
 
        // map current author
        author_map_[pimpl_->authorlist.get(0).bufferId()] = 0;
@@ -1118,6 +1119,11 @@ string BufferParams::readToken(Lexer & lex, string const 
& token,
                lex >> use_refstyle;
        } else if (token == "\\use_minted") {
                lex >> use_minted;
+       } else if (token == "\\use_lineno") {
+               lex >> use_lineno;
+       } else if (token == "\\lineno_options") {
+               lex.eatLine();
+               lineno_opts = trim(lex.getString());
        } else {
                lyxerr << "BufferParams::readToken(): Unknown token: " <<
                        token << endl;
@@ -1321,6 +1327,12 @@ void BufferParams::writeFile(ostream & os, Buffer const 
* buf) const
           << "\n\\use_refstyle " << use_refstyle
           << "\n\\use_minted " << use_minted
           << '\n';
+
+       if (use_lineno)
+               os << "\\use_lineno " << use_lineno << '\n';
+       if (!lineno_opts.empty())
+                os << "\\lineno_options " << lineno_opts << '\n';
+
        if (isbackgroundcolor == true)
                os << "\\backgroundcolor " << lyx::X11hexname(backgroundcolor) 
<< '\n';
        if (isfontcolor == true)
@@ -2132,6 +2144,14 @@ bool BufferParams::writeLaTeX(otexstream & os, 
LaTeXFeatures & features,
                // hyperref loads this automatically
                os << "\\usepackage{nameref}\n";
 
+       if (use_lineno){
+               os << "\\usepackage";
+               if (!lineno_opts.empty())
+                       os << "[" << lineno_opts << "]";
+               os << "{lineno}\n";
+               os << "\\linenumbers\n";
+       }
+
        // bibtopic needs to be loaded after hyperref.
        // the dot provides the aux file naming which LyX can detect.
        if (features.mustProvide("bibtopic"))
diff --git a/src/BufferParams.h b/src/BufferParams.h
index 5c80670..1e8b5b0 100644
--- a/src/BufferParams.h
+++ b/src/BufferParams.h
@@ -550,6 +550,10 @@ public:
        bool use_refstyle;
        /// use minted? or listings?
        bool use_minted;
+       //output line numbering
+       bool use_lineno;
+       //optional params for lineno package
+       std::string lineno_opts;
 
        /// Return true if language could be set to lang,
        /// otherwise return false and do not change language
diff --git a/src/frontends/qt4/GuiDocument.cpp 
b/src/frontends/qt4/GuiDocument.cpp
index 23bb35c..48bc112 100644
--- a/src/frontends/qt4/GuiDocument.cpp
+++ b/src/frontends/qt4/GuiDocument.cpp
@@ -1253,6 +1253,11 @@ GuiDocument::GuiDocument(GuiView & lv)
        numberingModule->tocTW->headerItem()->setText(1, qt_("Numbered"));
        numberingModule->tocTW->headerItem()->setText(2, qt_("Appears in TOC"));
        setSectionResizeMode(numberingModule->tocTW->header(), 
QHeaderView::ResizeToContents);
+       connect(numberingModule->linenoGB, SIGNAL(clicked()),
+               this, SLOT(change_adaptor()));
+       connect(numberingModule->linenoLE, SIGNAL(textChanged(QString)),
+               this, SLOT(change_adaptor()));
+
 
        // biblio
        biblioModule = new UiWidget<Ui::BiblioUi>(this);
@@ -3282,6 +3287,8 @@ void GuiDocument::applyView()
                bp_.tocdepth = numberingModule->tocSL->value();
                bp_.secnumdepth = numberingModule->depthSL->value();
        }
+       bp_.use_lineno = numberingModule->linenoGB->isChecked();
+       bp_.lineno_opts = fromqstr(numberingModule->linenoLE->text());
 
        // bullets
        bp_.user_defined_bullet(0) = bulletsModule->bullet(0);
@@ -3806,6 +3813,9 @@ void GuiDocument::paramsToDialog()
                numberingModule->tocTW->clear();
        }
 
+       numberingModule->linenoGB->setChecked(bp_.use_lineno);
+       numberingModule->linenoLE->setText(toqstr(bp_.lineno_opts));
+
        // bullets
        bulletsModule->setBullet(0, bp_.user_defined_bullet(0));
        bulletsModule->setBullet(1, bp_.user_defined_bullet(1));
diff --git a/src/frontends/qt4/ui/NumberingUi.ui 
b/src/frontends/qt4/ui/NumberingUi.ui
index 39bed38..7927862 100644
--- a/src/frontends/qt4/ui/NumberingUi.ui
+++ b/src/frontends/qt4/ui/NumberingUi.ui
@@ -90,6 +90,44 @@
      </property>
     </widget>
    </item>
+   <item row="5" column="0">
+    <widget class="QGroupBox" name="linenoGB">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="title">
+      <string>L&amp;ines numbering</string>
+     </property>
+     <property name="flat">
+      <bool>true</bool>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <property name="checked">
+      <bool>false</bool>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Additional O&amp;ptions:</string>
+        </property>
+        <property name="buddy">
+         <cstring>linenoLE</cstring>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="linenoLE">
+        <property name="toolTip">
+         <string>lineno package options (e.g. right, modulo, switch, 
displaymath, mathlines,...)</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
   </layout>
  </widget>
  <tabstops>
diff --git a/src/tex2lyx/TODO.txt b/src/tex2lyx/TODO.txt
index d1760ac..c64cdcc 100644
--- a/src/tex2lyx/TODO.txt
+++ b/src/tex2lyx/TODO.txt
@@ -34,6 +34,7 @@ Format LaTeX feature                        LyX feature
 443    unicode-math.sty                     InsetMath*
 453    automatic stmaryrd loading           \use_package stmaryrd
 457    automatic stackrel loading           \use_package stackrel
+575    numbering of lines (lineno)          \use_lineno, \lineno_options
 
 
 
diff --git a/src/version.h b/src/version.h
index a92854e..496e34b 100644
--- a/src/version.h
+++ b/src/version.h
@@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
 
 // Do not remove the comment below, so we get merge conflict in
 // independent branches. Instead add your own.
-#define LYX_FORMAT_LYX 574 // gm: Japanese fixes
-#define LYX_FORMAT_TEX2LYX 574
+#define LYX_FORMAT_LYX 575 // ps: lineno
+#define LYX_FORMAT_TEX2LYX 575
 
 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
 #ifndef _MSC_VER

Reply via email to