]> git.lyx.org Git - features.git/commitdiff
support for rightarrowfill, leftarrowfill, upbracefill, downbracefill, by Helge Hafting.
authorJürgen Spitzmüller <spitz@lyx.org>
Wed, 30 Apr 2008 20:11:57 +0000 (20:11 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Wed, 30 Apr 2008 20:11:57 +0000 (20:11 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24567 a592a061-630c-0410-9148-cb99ea01b6c8

development/FORMAT
lib/lyx2lyx/LyX.py
lib/lyx2lyx/lyx_1_6.py
lib/ui/stdcontext.inc
src/Buffer.cpp
src/frontends/qt4/GuiHSpace.cpp
src/frontends/qt4/ui/HSpaceUi.ui
src/insets/InsetSpace.cpp
src/insets/InsetSpace.h

index 3dda47ea9a49c95144dce78ec4e8c628378050f7..4a957b527e4160c1028152c838761744912b6894 100644 (file)
@@ -1,6 +1,11 @@
 LyX file-format changes
 -----------------------
 
+2008-25-04 Helge Hafting <helge.hafting@aitel.hist.no>
+       * Format incremented to 330: More horizontal fills
+         - \leftarrowfill, \rightarrowfill
+         - \upbracefill, \downbracefill
+
 2008-04-28 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
        * Format incremented to 329: new param \master.
 
index b4b9648a72280770c95695c549397f70daa83e90..30718e98a05214f3e0995c2f3795835c4c0a081c 100644 (file)
@@ -80,7 +80,7 @@ format_relation = [("0_06",    [200], minor_versions("0.6" , 4)),
                    ("1_3",     [221], minor_versions("1.3" , 7)),
                    ("1_4", range(222,246), minor_versions("1.4" , 5)),
                    ("1_5", range(246,277), minor_versions("1.5" , 2)),
-                   ("1_6", range(277,330), minor_versions("1.6" , 0))]
+                   ("1_6", range(277,331), minor_versions("1.6" , 0))]
 
 
 def formats_list():
index 60b1e31be1a9acdc8011dc7f9a00d389f0a59c36..f68c61818a5ac909cbf34f8839b86dcc14225f09 100644 (file)
@@ -1791,6 +1791,78 @@ def revert_protected_hfill(document):
         'hspace*{\n\\backslash\nfill}\n\\end_layout\n\n\\end_inset\n\n')
 
 
+def revert_leftarrowfill(document):
+    ' Revert \\begin_inset Space \\leftarrowfill{} to ERT '
+    i = 0
+    while True:
+        i = find_token(document.body, '\\begin_inset Space \\leftarrowfill{}', i)
+        if i == -1:
+            return
+        j = find_end_of_inset(document.body, i)
+        if j == -1:
+            document.warning("Malformed LyX document: Could not find end of space inset.")
+            continue
+        del document.body[j]
+        document.body[i] = document.body[i].replace('\\begin_inset Space \\leftarrowfill{}', \
+        '\\begin_inset ERT\nstatus collapsed\n\n' \
+        '\\begin_layout Standard\n\n\n\\backslash\n' \
+        'leftarrowfill{}\n\\end_layout\n\n\\end_inset\n\n')
+
+
+def revert_rightarrowfill(document):
+    ' Revert \\begin_inset Space \\rightarrowfill{} to ERT '
+    i = 0
+    while True:
+        i = find_token(document.body, '\\begin_inset Space \\rightarrowfill{}', i)
+        if i == -1:
+            return
+        j = find_end_of_inset(document.body, i)
+        if j == -1:
+            document.warning("Malformed LyX document: Could not find end of space inset.")
+            continue
+        del document.body[j]
+        document.body[i] = document.body[i].replace('\\begin_inset Space \\rightarrowfill{}', \
+        '\\begin_inset ERT\nstatus collapsed\n\n' \
+        '\\begin_layout Standard\n\n\n\\backslash\n' \
+        'rightarrowfill{}\n\\end_layout\n\n\\end_inset\n\n')
+
+
+def revert_upbracefill(document):
+    ' Revert \\begin_inset Space \\upbracefill{} to ERT '
+    i = 0
+    while True:
+        i = find_token(document.body, '\\begin_inset Space \\upbracefill{}', i)
+        if i == -1:
+            return
+        j = find_end_of_inset(document.body, i)
+        if j == -1:
+            document.warning("Malformed LyX document: Could not find end of space inset.")
+            continue
+        del document.body[j]
+        document.body[i] = document.body[i].replace('\\begin_inset Space \\upbracefill{}', \
+        '\\begin_inset ERT\nstatus collapsed\n\n' \
+        '\\begin_layout Standard\n\n\n\\backslash\n' \
+        'upbracefill{}\n\\end_layout\n\n\\end_inset\n\n')
+
+
+def revert_downbracefill(document):
+    ' Revert \\begin_inset Space \\downbracefill{} to ERT '
+    i = 0
+    while True:
+        i = find_token(document.body, '\\begin_inset Space \\downbracefill{}', i)
+        if i == -1:
+            return
+        j = find_end_of_inset(document.body, i)
+        if j == -1:
+            document.warning("Malformed LyX document: Could not find end of space inset.")
+            continue
+        del document.body[j]
+        document.body[i] = document.body[i].replace('\\begin_inset Space \\downbracefill{}', \
+        '\\begin_inset ERT\nstatus collapsed\n\n' \
+        '\\begin_layout Standard\n\n\n\\backslash\n' \
+        'downbracefill{}\n\\end_layout\n\n\\end_inset\n\n')
+
+
 def revert_local_layout(document):
     ' Revert local layout headers.'
     i = 0
@@ -2066,9 +2138,11 @@ convert = [[277, [fix_wrong_tables]],
            [327, []],
            [328, [remove_embedding, remove_extra_embedded_files, remove_inzip_options]],
            [329, []],
+          [330, []],
           ]
 
-revert =  [[328, [revert_master]],
+revert =  [[329, [revert_leftarrowfill, revert_rightarrowfill, revert_upbracefill, revert_downbracefill]],
+          [328, [revert_master]],
            [327, []],
            [326, [revert_mexican]],
            [325, [revert_pdfpages]],
index 16fd69f3fdc8a740170d3f310e41a9b968752181..92b06a00d4524add298ee37e6526cd787e12f0f9 100644 (file)
@@ -179,6 +179,10 @@ Menuset
                Item "Protected Horizontal Fill|i" "next-inset-modify space \hspace*{\fill}"
                Item "Horizontal Fill (Dots)|D" "next-inset-modify space \dotfill{}"
                Item "Horizontal Fill (Rule)|R" "next-inset-modify space \hrulefill{}"
+               Item "Horizontal Fill (Left Arrow)|L" "next-inset-modify space \leftarrowfill{}"
+               Item "Horizontal Fill (Right Arrow)|g" "next-inset-modify space \rightarrowfill{}"
+               Item "Horizontal Fill (Up Brace)|p" "next-inset-modify space \upbracefill{}"
+               Item "Horizontal Fill (Down Brace)|B" "next-inset-modify space \downbracefill{}"
                Item "Custom Length|C" "command-sequence next-inset-modify space \hspace{} \length 1in; next-inset-toggle"
                Separator
                Item "Settings...|S" "next-inset-toggle"
index 764f66de8f88b2dcbed9f32fe1357af8895b9a1d..104e3b1f0ddfd3794e0af792f25fefdaa7fb5142 100644 (file)
@@ -115,7 +115,7 @@ namespace os = support::os;
 
 namespace {
 
-int const LYX_FORMAT = 329;
+int const LYX_FORMAT = 330;
 
 typedef map<string, bool> DepClean;
 typedef map<docstring, pair<InsetLabel const *, Buffer::References> > RefCache;
index 5afc992532e35e9f378fa167650cb81f44d186d0..60a279e9f90dfe4acadb6a13b060f24c3d59b824 100644 (file)
@@ -165,6 +165,22 @@ static void setWidgetsFromHSpace(InsetSpaceParams const & params,
                        item = 6;
                        pattern = 2;
                        break;
+               case InsetSpaceParams::LEFTARROWFILL:
+                       item = 6;
+                       pattern = 3;
+                       break;
+               case InsetSpaceParams::RIGHTARROWFILL:
+                       item = 6;
+                       pattern = 4;
+                       break;
+               case InsetSpaceParams::UPBRACEFILL:
+                       item = 6;
+                       pattern = 5;
+                       break;
+               case InsetSpaceParams::DOWNBRACEFILL:
+                       item = 6;
+                       pattern = 6;
+                       break;
                case InsetSpaceParams::CUSTOM:
                        item = 7;
                        break;
@@ -220,6 +236,14 @@ static InsetSpaceParams setHSpaceFromWidgets(int spacing,
                                params.kind = InsetSpaceParams::DOTFILL;
                        else if (fill == 2)
                                params.kind = InsetSpaceParams::HRULEFILL;
+                       else if (fill == 3)
+                               params.kind = InsetSpaceParams::LEFTARROWFILL;
+                       else if (fill == 4)
+                               params.kind = InsetSpaceParams::RIGHTARROWFILL;
+                       else if (fill == 5)
+                               params.kind = InsetSpaceParams::UPBRACEFILL;
+                       else if (fill == 6)
+                               params.kind = InsetSpaceParams::DOWNBRACEFILL;
                        else if (keep)
                                params.kind = InsetSpaceParams::HFILL_PROTECTED;
                        else
index 7b1c84bc7b1676372fd8035519c6c87238606ef3..613dfa20e97e28d00aea89dea54416f5929609f8 100644 (file)
@@ -6,7 +6,7 @@
     <x>0</x>
     <y>0</y>
     <width>259</width>
-    <height>146</height>
+    <height>160</height>
    </rect>
   </property>
   <property name="windowTitle" >
        <string>________</string>
       </property>
      </item>
+     <item>
+      <property name="text" >
+       <string>&lt;-----------</string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>-----------></string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>\-----v-----/</string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>/-----^-----\</string>
+      </property>
+     </item>
     </widget>
    </item>
    <item row="0" column="0" >
index 95adda3aacc82fb6cc36e5a5021d1d7ab6579535..10ce34582b7073db2de1521e2996e2c8657a0158 100644 (file)
@@ -102,6 +102,18 @@ docstring InsetSpace::toolTip(BufferView const &, int, int) const
        case InsetSpaceParams::HRULEFILL:
                message = _("Horizontal Fill (Rule)");
                break;
+       case InsetSpaceParams::LEFTARROWFILL:
+               message = _("Horizontal Fill (Left Arrow)");
+               break;
+       case InsetSpaceParams::RIGHTARROWFILL:
+               message = _("Horizontal Fill (Right Arrow)");
+               break;
+       case InsetSpaceParams::UPBRACEFILL:
+               message = _("Horizontal Fill (Up Brace)");
+               break;
+       case InsetSpaceParams::DOWNBRACEFILL:
+               message = _("Horizontal Fill (Down Brace)");
+               break;
        case InsetSpaceParams::CUSTOM:
                message = support::bformat(_("Horizontal Space (%1$s)"),
                                params_.length.asDocstring());
@@ -202,6 +214,10 @@ void InsetSpace::metrics(MetricsInfo & mi, Dimension & dim) const
                case InsetSpaceParams::HFILL_PROTECTED:
                case InsetSpaceParams::DOTFILL:
                case InsetSpaceParams::HRULEFILL:
+               case InsetSpaceParams::LEFTARROWFILL:
+               case InsetSpaceParams::RIGHTARROWFILL:
+               case InsetSpaceParams::UPBRACEFILL:
+               case InsetSpaceParams::DOWNBRACEFILL:
                        // shut up compiler
                        break;
        }
@@ -222,6 +238,9 @@ void InsetSpace::draw(PainterInfo & pi, int x, int y) const
                int const y0 = y + desc;
                int const y1 = y - asc;
                int const y2 = y - asc / 2;
+               int const xoffset = (y0 - y1) / 2;
+               int const x2 = x0 + xoffset;
+               int const x3 = x1 - xoffset;
 
                if (params_.kind == InsetSpaceParams::HFILL) {
                        pi.pain.line(x0, y1, x0, y0, Color_added_space);
@@ -238,10 +257,26 @@ void InsetSpace::draw(PainterInfo & pi, int x, int y) const
                        pi.pain.line(x0, y, x1, y, Color_special,
                                frontend::Painter::line_onoffdash);
                        pi.pain.line(x1, y1, x1, y0, Color_special);
-               } if (params_.kind == InsetSpaceParams::HRULEFILL) {
+               } else if (params_.kind == InsetSpaceParams::HRULEFILL) {
                        pi.pain.line(x0, y1, x0, y0, Color_special);
                        pi.pain.line(x0, y, x1, y, Color_special);
                        pi.pain.line(x1, y1, x1, y0, Color_special);
+               } else if (params_.kind == InsetSpaceParams::LEFTARROWFILL) {
+                       pi.pain.line(x2, y1 , x0, y2, Color_special);
+                       pi.pain.line(x0, y2 , x2, y0, Color_special);
+                       pi.pain.line(x0, y2 , x1, y2, Color_special);
+               } else if (params_.kind == InsetSpaceParams::RIGHTARROWFILL) {
+                       pi.pain.line(x3, y1 , x1, y2, Color_special);
+                       pi.pain.line(x1, y2 , x3, y0, Color_special);
+                       pi.pain.line(x0, y2 , x1, y2, Color_special);
+               } else if (params_.kind == InsetSpaceParams::UPBRACEFILL) {
+                       pi.pain.line(x0, y1 , x2, y2, Color_special);
+                       pi.pain.line(x3, y2 , x1, y1, Color_special);
+                       pi.pain.line(x2, y2 , x3, y2, Color_special);
+               } else if (params_.kind == InsetSpaceParams::DOWNBRACEFILL) {
+                       pi.pain.line(x0, y0 , x2, y2, Color_special);
+                       pi.pain.line(x3, y2 , x1, y0, Color_special);
+                       pi.pain.line(x2, y2 , x3, y2, Color_special);
                }
                return;
        }
@@ -313,6 +348,18 @@ void InsetSpaceParams::write(ostream & os) const
        case InsetSpaceParams::HRULEFILL:
                os <<  "\\hrulefill{}";
                break;
+       case InsetSpaceParams::LEFTARROWFILL:
+               os <<  "\\leftarrowfill{}";
+               break;
+       case InsetSpaceParams::RIGHTARROWFILL:
+               os <<  "\\rightarrowfill{}";
+               break;
+       case InsetSpaceParams::UPBRACEFILL:
+               os <<  "\\upbracefill{}";
+               break;
+       case InsetSpaceParams::DOWNBRACEFILL:
+               os <<  "\\downbracefill{}";
+               break;
        case InsetSpaceParams::CUSTOM:
                os <<  "\\hspace{}";
                break;
@@ -358,6 +405,14 @@ void InsetSpaceParams::read(Lexer & lex)
                kind = InsetSpaceParams::HRULEFILL;
        else if (command == "\\hspace{}")
                kind = InsetSpaceParams::CUSTOM;
+       else if (command == "\\leftarrowfill{}")
+               kind = InsetSpaceParams::LEFTARROWFILL;
+       else if (command == "\\rightarrowfill{}")
+               kind = InsetSpaceParams::RIGHTARROWFILL;
+       else if (command == "\\upbracefill{}")
+               kind = InsetSpaceParams::UPBRACEFILL;
+       else if (command == "\\downbracefill{}")
+               kind = InsetSpaceParams::DOWNBRACEFILL;
        else if (command == "\\hspace*{}")
                kind = InsetSpaceParams::CUSTOM_PROTECTED;
        else
@@ -421,6 +476,18 @@ int InsetSpace::latex(odocstream & os, OutputParams const & runparams) const
        case InsetSpaceParams::HRULEFILL:
                os << (runparams.free_spacing ? " " : "\\hrulefill{}");
                break;
+       case InsetSpaceParams::LEFTARROWFILL:
+               os << (runparams.free_spacing ? " " : "\\leftarrowfill{}");
+               break;
+       case InsetSpaceParams::RIGHTARROWFILL:
+               os << (runparams.free_spacing ? " " : "\\rightarrowfill{}");
+               break;
+       case InsetSpaceParams::UPBRACEFILL:
+               os << (runparams.free_spacing ? " " : "\\upbracefill{}");
+               break;
+       case InsetSpaceParams::DOWNBRACEFILL:
+               os << (runparams.free_spacing ? " " : "\\downbracefill{}");
+               break;
        case InsetSpaceParams::CUSTOM:
                if (runparams.free_spacing)
                        os << " ";
@@ -451,6 +518,18 @@ int InsetSpace::plaintext(odocstream & os, OutputParams const &) const
        case InsetSpaceParams::HRULEFILL:
                os << "_____";
                return 5;
+       case InsetSpaceParams::LEFTARROWFILL:
+               os << "<----";
+               return 5;
+       case InsetSpaceParams::RIGHTARROWFILL:
+               os << "---->";
+               return 5;
+       case InsetSpaceParams::UPBRACEFILL:
+               os << "\\-v-/";
+               return 5;
+       case InsetSpaceParams::DOWNBRACEFILL:
+               os << "/-^-\\";
+               return 5;
        default:
                os << ' ';
                return 1;
@@ -482,6 +561,10 @@ int InsetSpace::docbook(odocstream & os, OutputParams const &) const
        case InsetSpaceParams::HRULEFILL:
                // FIXME
                os << '\n';
+       case InsetSpaceParams::LEFTARROWFILL:
+       case InsetSpaceParams::RIGHTARROWFILL:
+       case InsetSpaceParams::UPBRACEFILL:
+       case InsetSpaceParams::DOWNBRACEFILL:
        case InsetSpaceParams::CUSTOM:
        case InsetSpaceParams::CUSTOM_PROTECTED:
                // FIXME
@@ -502,7 +585,11 @@ bool InsetSpace::isStretchableSpace() const
        return params_.kind == InsetSpaceParams::HFILL
                || params_.kind == InsetSpaceParams::HFILL_PROTECTED
                || params_.kind == InsetSpaceParams::DOTFILL
-               || params_.kind == InsetSpaceParams::HRULEFILL;
+               || params_.kind == InsetSpaceParams::HRULEFILL
+               || params_.kind == InsetSpaceParams::LEFTARROWFILL
+               || params_.kind == InsetSpaceParams::RIGHTARROWFILL
+               || params_.kind == InsetSpaceParams::UPBRACEFILL
+               || params_.kind == InsetSpaceParams::DOWNBRACEFILL;
 }
 
 
index c88ba4680bb8ded995333de4d07173120f32921c..98074f18efca0ee435bf527992609873106fbe0c 100644 (file)
@@ -51,6 +51,14 @@ public:
                DOTFILL,
                /// rubber length, filled with a rule
                HRULEFILL,
+               /// rubber length, filled with a left arrow
+               LEFTARROWFILL,
+               /// rubber length, filled with a right arrow
+               RIGHTARROWFILL,
+               // rubber length, filled with an up brace
+               UPBRACEFILL,
+               // rubber length, filled with a down brace
+               DOWNBRACEFILL,
                /// \hspace{length}
                CUSTOM,
                /// \hspace*{length}