]> git.lyx.org Git - lyx.git/commitdiff
re-implement LFUN_REFERENCE_INSERT
authorJuergen Spitzmueller <spitz@lyx.org>
Sun, 28 Jul 2024 08:37:30 +0000 (10:37 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Sun, 28 Jul 2024 08:37:30 +0000 (10:37 +0200)
this is in preparation of another feature

src/FuncCode.h
src/LyXAction.cpp
src/Text.cpp

index a5f638d6d711b0fdbcfd672d6bd478d4cad92601..7f35ca391dbe457578626b83fbf25c62cbf46105 100644 (file)
@@ -509,6 +509,8 @@ enum FuncCode
        LFUN_TAB_GROUP_PREVIOUS,        // daniel 20220130
        LFUN_BIBTEX_DATABASE_LIST,      // bpiwowar, 20221218
        LFUN_STATISTICS_REFERENCE_CLAMP,// sanda, 20240324
+       LFUN_REFERENCE_INSERT,          // spitz, 20240728
+       // 400
        LFUN_LASTACTION                 // end of the table
 };
 
index 95f705cc1fbc93d07b5b13863438a87e535ea90a..41df737332cae41e3a8b70c2d5ed21bf248b46e9 100644 (file)
@@ -3512,6 +3512,16 @@ void LyXAction::init()
  */
                { LFUN_REDO, "redo", ReadOnly, Edit },
 
+/*!
+ * \var lyx::FuncCode lyx::LFUN_REFERENCE_INSERT
+ * \li Action: Inserts a cross-reference into the document.
+ * \li Notion: Optional <TYPE> can be used to set the type of reference 
+ * \li Syntax: reference-insert <LABEL> [<TYPE>]
+ * \li Origin: spitz, 28 Jul 2024
+ * \endvar
+ */
+               { LFUN_REFERENCE_INSERT, "reference-insert", Noop, Edit },
+
 /*!
  * \var lyx::FuncCode lyx::LFUN_REFERENCE_NEXT
  * \li Action: Go to the next label or cross-reference.
index 2ec8f4905a7ee17542ac8c51ba61be1e109c2663..826b4db111823c7f3422ba479d25d0579102ae16 100644 (file)
@@ -82,6 +82,7 @@
 #include "insets/InsetIPAMacro.h"
 #include "insets/InsetNewline.h"
 #include "insets/InsetQuotes.h"
+#include "insets/InsetRef.h"
 #include "insets/InsetSpecialChar.h"
 #include "insets/InsetTabular.h"
 #include "insets/InsetText.h"
@@ -5483,6 +5484,18 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
        }
 
+       case LFUN_REFERENCE_INSERT: {
+               string const label = cmd.getArg(0);
+               string const type = cmd.getArg(1);
+               InsetCommandParams p(REF_CODE, "ref");
+               if (!type.empty())
+                       p.setCmdName(type);
+               p["reference"] = from_utf8(label);
+               string const data = InsetCommand::params2string(p);
+               lyx::dispatch(FuncRequest(LFUN_INSET_INSERT, data));
+               break;
+       }
+
        case LFUN_INFO_INSERT: {
                if (cmd.argument().empty()) {
                        bv->showDialog("info", cur.current_font.language()->lang());
@@ -6726,6 +6739,13 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_PREVIEW_INSERT:
                code = PREVIEW_CODE;
                break;
+       case LFUN_REFERENCE_INSERT: {
+               string const type = cmd.getArg(1);
+               if (!type.empty())
+                       enable = InsetRef::isCompatibleCommand(type);
+               code = REF_CODE;
+               break;
+       }
        case LFUN_SCRIPT_INSERT:
                code = SCRIPT_CODE;
                break;