commit e836cc0aacb4a90e582690ca26f61fb94fbe8280
Author: Pavel Sanda <[email protected]>
Date: Thu Feb 8 21:33:37 2018 +0100
Unify graphics-groups inside marked block functionality.
Fixes #11026.
https://www.mail-archive.com/[email protected]/msg203683.html
---
lib/ui/stdcontext.inc | 1 +
src/BufferView.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++
src/FuncCode.h | 3 ++-
src/LyXAction.cpp | 11 +++++++++++
4 files changed, 59 insertions(+), 1 deletions(-)
diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc
index 3e49092..9acf334 100644
--- a/lib/ui/stdcontext.inc
+++ b/lib/ui/stdcontext.inc
@@ -358,6 +358,7 @@ Menuset
Item "Apply Last Text Style|A" "textstyle-apply"
Submenu "Text Style|x" "edit_textstyles"
Item "Paragraph Settings...|P" "layout-paragraph"
+ OptItem "Unify Graphics Groups|U" "graphics-unify"
LanguageSelector
Separator
Item "Fullscreen Mode" "ui-toggle fullscreen"
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 36ac46c..edea2eb 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -1134,6 +1134,10 @@ bool BufferView::getStatus(FuncRequest const & cmd,
FuncStatus & flag)
flag.setEnabled(true);
break;
+ case LFUN_GRAPHICS_UNIFY:
+ flag.setEnabled(cur.selection());
+ break;
+
case LFUN_WORD_FINDADV: {
FindAndReplaceOptions opt;
istringstream iss(to_utf8(cmd.argument()));
@@ -1655,6 +1659,47 @@ void BufferView::dispatch(FuncRequest const & cmd,
DispatchResult & dr)
break;
}
+ case LFUN_GRAPHICS_UNIFY: {
+
+ cur.recordUndoFullBuffer();
+
+ DocIterator from, to;
+ from = cur.selectionBegin();
+ to = cur.selectionEnd();
+
+ string newId = cmd.getArg(0);
+ bool fetchId=newId.empty(); //if we wait for groupId from first
graphics inset
+
+ InsetGraphicsParams grp_par;
+ InsetGraphics::string2params(graphics::getGroupParams(buffer_,
newId), buffer_, grp_par);
+
+ if (!from.nextInset()) //move to closest inset
+ from.forwardInset();
+
+ while (!from.empty() && from < to) {
+ Inset * inset = from.nextInset();
+ if (!inset)
+ break;
+ if (inset->lyxCode() == GRAPHICS_CODE) {
+ InsetGraphics * ig = inset->asInsetGraphics();
+ if (!ig)
+ break;
+ InsetGraphicsParams inspar = ig->getParams();
+ if (fetchId) {
+ grp_par = inspar;
+ fetchId = false;
+
+ } else {
+ grp_par.filename = inspar.filename;
+ ig->setParams(grp_par);
+ }
+ }
+ from.forwardInset();
+ }
+ dr.screenUpdate(Update::Force); //needed if triggered from
context menu
+ break;
+ }
+
case LFUN_STATISTICS: {
DocIterator from, to;
if (cur.selection()) {
diff --git a/src/FuncCode.h b/src/FuncCode.h
index 4a59831..cce61f0 100644
--- a/src/FuncCode.h
+++ b/src/FuncCode.h
@@ -476,7 +476,8 @@ enum FuncCode
LFUN_DEVEL_MODE_TOGGLE, // lasgouttes 20170723
//370
LFUN_EXPORT_CANCEL, // rgh, 20171227
- LFUN_BUFFER_ANONYMIZE, // sanda, 20180201
+ LFUN_BUFFER_ANONYMIZE, // sanda, 20180201
+ LFUN_GRAPHICS_UNIFY, // sanda, 20180207
LFUN_LASTACTION // end of the table
};
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index 33d5100..871612e 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -3545,6 +3545,17 @@ void LyXAction::init()
*/
{ LFUN_SET_GRAPHICS_GROUP, "set-graphics-group", Noop, Edit },
+/*!
+ * \var lyx::FuncCode lyx::LFUN_GRAPHICS_UNIFY
+ * \li Action: Set the same group for all graphics insets in the marked block.
+ * \li Syntax: graphics-unify [<GROUP>]
+ * \li Params: <GROUP>: Id for an existing group. In case the Id is an empty
string,
+ the group Id from the first graphics inset will be
used.
+ * \li Origin: sanda, 7 Feb 2018
+ * \endvar
+ */
+ { LFUN_GRAPHICS_UNIFY, "graphics-unify", Noop, Edit },
+
/*!
* \var lyx::FuncCode lyx::LFUN_SPACE_INSERT