From cc4bfc7f04dc5a16347172f064f910ff3d26df9d Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Fri, 24 Jun 2016 17:47:30 -0400 Subject: [PATCH] Add toolbar menus for custom insets and character styles. I'm open to putting this elsewhere on the toolbar, or even on a different toolbar. Also, we need decent icons. These ones are not intended seriously but were just borrowed for testing purposes. Anyone have good ideas about icons? --- lib/Makefile.am | 4 + lib/images/dynamic-char-styles.svgz | Bin 0 -> 1586 bytes lib/images/dynamic-custom-insets.svgz | Bin 0 -> 1586 bytes lib/images/oxygen/dynamic-char-styles.svgz | Bin 0 -> 30164 bytes lib/images/oxygen/dynamic-custom-insets.svgz | Bin 0 -> 30164 bytes lib/ui/stdtoolbars.inc | 3 + src/frontends/qt4/GuiToolbar.cpp | 179 +++++++++++++++++-- src/frontends/qt4/GuiToolbar.h | 64 ++++++- src/frontends/qt4/Toolbars.cpp | 14 +- src/frontends/qt4/Toolbars.h | 4 +- 10 files changed, 241 insertions(+), 27 deletions(-) create mode 100644 lib/images/dynamic-char-styles.svgz create mode 100644 lib/images/dynamic-custom-insets.svgz create mode 100644 lib/images/oxygen/dynamic-char-styles.svgz create mode 100644 lib/images/oxygen/dynamic-custom-insets.svgz diff --git a/lib/Makefile.am b/lib/Makefile.am index f86b6de39a..2b3ea9a0d9 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -469,6 +469,8 @@ dist_images_DATA1X = \ images/dialog-toggle_findreplaceadv.svgz \ images/dialog-toggle_toc.svgz \ images/down.svgz \ + images/dynamic-char-styles.svgz \ + images/dynamic-custom-insets.svgz \ images/editclear.svgz \ images/emblem-readonly.svgz \ images/emblem-shellescape.svgz \ @@ -1746,6 +1748,8 @@ dist_imagesoxygen_DATA1X = \ images/oxygen/dialog-show_vclog.svgz \ images/oxygen/dialog-toggle_findreplaceadv.svgz \ images/oxygen/dialog-toggle_toc.svgz \ + images/oxygen/dynamic-char-styles.svgz \ + images/oxygen/dynamic-custom-insets.svgz \ images/oxygen/down.svgz \ images/oxygen/editclear.svgz \ images/oxygen/ert-insert.svgz \ diff --git a/lib/images/dynamic-char-styles.svgz b/lib/images/dynamic-char-styles.svgz new file mode 100644 index 0000000000000000000000000000000000000000..715b5f30762e4384437dff9aa95221dc6ec64552 GIT binary patch literal 1586 zcmV-22F>{&iwFP!000000M%GokJ~m7e&1igYG1ObCGi%iwH*`*Qlw~6AP4%amFTsy zIt)qPBfq{wT0RsjyH2t}QR_kC92|1Knc>jWm-l6XZcWqXbv5%yfIVcYw9fMCdggun z@WxjjYP+P$lA^B6%&The<@{{=i|?aXjY&F_p}V|WqPNvenlIe(rf`B;8k)kCrs~>|1SItK;^|&Iwbt`n zlh$QfSFO{m+Vcb9CR^;J?P~6r6Czsc5Yv!SA0+(tq3V)*f2ay;98;wj;}Cdz$9Yay&d&o<}n#?N(ha1)CLwM0?B#A_Qb{L1dGuL?3#wl zAe>{i<2x_J%fz@3v$~!<{-J0h8DoM@X)yLKxNquONs$JAg zIrGY-Yx4USWPeW`dM+hh&#eMAU z8EyAam<`WQ>!NPrbL@VXj#R^T^6nuf2P*Yq(Ha0B?-u!(IqB1HH-|^ek-bmC;ntrF zEr=JbB1(p#MZoU@Gpq)o6$K88gQbekYYjt z#bHZQL4^4bZSX}HArqhB0CT1k`>uF%>wPi+1oidf0kCktXNouRWO$F6`>uF9)l*Pi z=u>_I8UFaPBbGt@J&TvXn0(wAH#)&582f>oWFnxNN*N7ulH!1C&NUn4qztr>bdZt9 z>WfkJ(PGc!DH-W-d%k?cf!0u?C8ZOe1QbimwSbHiz_6!p_pmbiNjK9rrmfdaYDT-LEG=`Z6u$5BqIheK97Jh9Y2FoP?rd&82VB== z)y@3Ctli#k*Skx#wND@J)Xo#9@(?gZgx2DH~1+p%OnlTb(^Ql zq$q;)vs3M*_L^X#$Wv3bPdja_m+W<0@aPqMXLXt6Rd|@?VGr~n@PB@3@c{d8H#XeO z$~1sy`(3+%_V%4wHFdU5J7_S6VesQ~zs_4ox2yF}ncFn^tz%ecw_hUAdwg3C50Y^j zZd28bR!O(qDB2`Oj0a2+O(r}bgeXNQ@}Z6aO+rn86B=_#5WF>JdP1PdC6ePvAzuev zP!e(Bq%=cB2TXFwl$cN!5Tyy%mZ+hoa5eEaL>2X_k>a)=00RQqH*^WM2!RC(ZH+>o zy?wE;=ec_sks-9y+2Pj!)9HW*xZ_`&N4V~n)=4X=PZFP znD;~9-92LHXTStyly2#^T*Iv{Zt8WF9TGp)c{QX0?xrbnc*O*7iTjoGge+;7Nz)_` zaRqnGL+a+hi}7WdG&iQ%@Ne@rzsd_ch5IbbWtO+A0`&9BuH&+Xd(@(+@3#DHSs#SJ zUnmMFxLi^)0pKm{fSQ2q3b+?9(gHlAAOVTOk!CgnBN~ZF zYUIlRD2!oZ<%r@60hhq709&NE7~$?m@Zl%U;z2onWK zAeDv$!-&A+Gw8#V=B}_lA~z7*BGnyV@&nGG{MuUXF8dLbalxVT63_>2CGEAJ2?i;7 kafG+TUqc&0M8I=;?s3fi^W2--=5l`aFYHKRXYLaK0DX=a3IG5A literal 0 HcmV?d00001 diff --git a/lib/images/dynamic-custom-insets.svgz b/lib/images/dynamic-custom-insets.svgz new file mode 100644 index 0000000000000000000000000000000000000000..715b5f30762e4384437dff9aa95221dc6ec64552 GIT binary patch literal 1586 zcmV-22F>{&iwFP!000000M%GokJ~m7e&1igYG1ObCGi%iwH*`*Qlw~6AP4%amFTsy zIt)qPBfq{wT0RsjyH2t}QR_kC92|1Knc>jWm-l6XZcWqXbv5%yfIVcYw9fMCdggun z@WxjjYP+P$lA^B6%&The<@{{=i|?aXjY&F_p}V|WqPNvenlIe(rf`B;8k)kCrs~>|1SItK;^|&Iwbt`n zlh$QfSFO{m+Vcb9CR^;J?P~6r6Czsc5Yv!SA0+(tq3V)*f2ay;98;wj;}Cdz$9Yay&d&o<}n#?N(ha1)CLwM0?B#A_Qb{L1dGuL?3#wl zAe>{i<2x_J%fz@3v$~!<{-J0h8DoM@X)yLKxNquONs$JAg zIrGY-Yx4USWPeW`dM+hh&#eMAU z8EyAam<`WQ>!NPrbL@VXj#R^T^6nuf2P*Yq(Ha0B?-u!(IqB1HH-|^ek-bmC;ntrF zEr=JbB1(p#MZoU@Gpq)o6$K88gQbekYYjt z#bHZQL4^4bZSX}HArqhB0CT1k`>uF%>wPi+1oidf0kCktXNouRWO$F6`>uF9)l*Pi z=u>_I8UFaPBbGt@J&TvXn0(wAH#)&582f>oWFnxNN*N7ulH!1C&NUn4qztr>bdZt9 z>WfkJ(PGc!DH-W-d%k?cf!0u?C8ZOe1QbimwSbHiz_6!p_pmbiNjK9rrmfdaYDT-LEG=`Z6u$5BqIheK97Jh9Y2FoP?rd&82VB== z)y@3Ctli#k*Skx#wND@J)Xo#9@(?gZgx2DH~1+p%OnlTb(^Ql zq$q;)vs3M*_L^X#$Wv3bPdja_m+W<0@aPqMXLXt6Rd|@?VGr~n@PB@3@c{d8H#XeO z$~1sy`(3+%_V%4wHFdU5J7_S6VesQ~zs_4ox2yF}ncFn^tz%ecw_hUAdwg3C50Y^j zZd28bR!O(qDB2`Oj0a2+O(r}bgeXNQ@}Z6aO+rn86B=_#5WF>JdP1PdC6ePvAzuev zP!e(Bq%=cB2TXFwl$cN!5Tyy%mZ+hoa5eEaL>2X_k>a)=00RQqH*^WM2!RC(ZH+>o zy?wE;=ec_sks-9y+2Pj!)9HW*xZ_`&N4V~n)=4X=PZFP znD;~9-92LHXTStyly2#^T*Iv{Zt8WF9TGp)c{QX0?xrbnc*O*7iTjoGge+;7Nz)_` zaRqnGL+a+hi}7WdG&iQ%@Ne@rzsd_ch5IbbWtO+A0`&9BuH&+Xd(@(+@3#DHSs#SJ zUnmMFxLi^)0pKm{fSQ2q3b+?9(gHlAAOVTOk!CgnBN~ZF zYUIlRD2!oZ<%r@60hhq709&NE7~$?m@Zl%U;z2onWK zAeDv$!-&A+Gw8#V=B}_lA~z7*BGnyV@&nGG{MuUXF8dLbalxVT63_>2CGEAJ2?i;7 kafG+TUqc&0M8I=;?s3fi^W2--=5l`aFYHKRXYLaK0DX=a3IG5A literal 0 HcmV?d00001 diff --git a/lib/images/oxygen/dynamic-char-styles.svgz b/lib/images/oxygen/dynamic-char-styles.svgz new file mode 100644 index 0000000000000000000000000000000000000000..486a3730c472baea33a0e39d2e2cf4c8d224e8fa GIT binary patch literal 30164 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 Zu4eRN%@;ry?DSOv{ZnQADFkd7 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�J9sNHH?i5IsI7^Vf!V2O$Fg?BX8DlrB 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 Zu4eRN%@;ry?DSOv{ZnQADFkd7 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�J9sNHH?i5IsI7^Vf!V2O$Fg?BX8DlrB zpnexB2oC$REX<%JhH)(OzyAd7(f^?RzhJ@5X25>rhGZcBa=?OL9sTL^&yFCrh^7IM zeFNeWqe15WeWOzNKfvn&{{MqK>Yu{@a>Lv01(g80KpMlr&=_ooGn(bF9Tou+0hpyA z;yX?PE3sP}N;4eGQ2?G83V`JGpcPNf(W!+zH^DE1FgDVqM*O@p%Je^T>*QuCjrX7tbb;;&OP!T$59`Th4( z-z~L)JWR9nmsSCKj3$BcF^>5TpdTlG9bj*Q{Bxo5%YlG!C4MuIpLhFbtGB<5nV(V; z!+|73Qsg%fJ{-ewH1KA?(E&m;*f$c$NseSt;>&Xh762M>V3Y$`zDEsBaLhLXcm{?6 z`mx~}ii5z|oRP$KpQXTOAilu0DBw^ey8|W(&Y@TkO%Mw{F$@9RiUnQ*JPBM2WGx&( zAqDa}@Du7gfdg;^E)@L$+!BZe;L0oxe(kSc{qWb*2#y6q*s09M9#EDcHY$UGe8Ox_ zO*142Aqa#ONpjS7&SnyPcjF&0H2Pt`9QD-x9nSpJ zzMTRl`oH&u<)1fZbz1$hwM;>JC{pmxf0IA8{W=nU2)#b>y6(s2|KH0m*hb#|R;&OR z{0`8U#s3m3U!ejrIk$xhi_;v({Y#+&9Co`FumHe*hWlHg0(j5v^bC&C8#4bG5I=xW zq4x;*ZLoZW3JanfgxH=iHWms7MeI>TbL@Ua5V1Hz{IhYihbpmk;@=ra*dGSc-*7q_ zWVHXoPWJ~<`a2X8q)Px`yCC}k=miECpWW6_fYtDwL2Mi!kQ(lbiEw}=0(AXLG6t#% zd{1t&0C?1QK%7`$FyNfPaGO%tj7e-10R0Y}ibLr=HE;QR^8<j4Y`=7jIZ18q-o%-*dHv9QgrK^wJqmIB-v%q0FLMz_`bGRM!`sN4j}kO z{yBQ%yTIeOqc(gbe)?k@#6Ej~pP=Mldh~BVMxZzToMQY24S%~X_4`izhrUIFkOrBY zG)P4NPtx11<)f1P2OxOGf|^ zzft=kyR)(YEOEfXX`sNU4NQoQo9_0C)=Eh}xVC z5O18?7FxEX3E0!_coYfp{|_5l(kw#~yU?e;{1@F8alZZZcL41uy}K*8Hs}QaH~@_# zwMkBDU*G}YzxxpJmlk~2=NooIsetWindowTitle(label); + m->setTearOffEnabled(true); + connect(bar_, SIGNAL(updated()), m, SLOT(updateParent())); + connect(bar_, SIGNAL(updated()), this, SLOT(updateTriggered())); + connect(bar_, SIGNAL(iconSizeChanged(QSize)), + this, SLOT(setIconSize(QSize))); + setMenu(m); +} + + +bool DynamicMenuButton::isMenuType(string const & s) +{ + return s == "dynamic-custom-insets" || + s == "dynamic-char-styles"; +} + + +void DynamicMenuButton::updateTriggered() +{ + QMenu * m = menu(); + // the menu should exist by this point + // if not, we can at least avoid crashing in release mode + LASSERT(m, return); + GuiView const & owner = bar_->owner(); + BufferView const * bv = owner.currentBufferView(); + if (!bv) { + m->clear(); + setEnabled(false); + setMinimumWidth(sizeHint().width()); + d->text_class_.reset(); + d->inset_ = 0; + return; + } + + DocumentClassConstPtr text_class = + bv->buffer().params().documentClassPtr(); + InsetText const * inset = &(bv->cursor().innerText()->inset()); + // if the text class has changed, then we need to reload the menu + if (d->text_class_ != text_class) { + d->text_class_ = text_class; + // at the moment, we can just call loadFlexInsets, and it will + // handle both types. if there were more types of menus, then we + // might need to have other options. + loadFlexInsets(); + } + // remember where we are + d->inset_ = inset; + // note that enabling here might need to be more subtle if there + // were other kinds of menus. + setEnabled(!bv->buffer().isReadonly() && + !m->isEmpty() && + inset->insetAllowed(FLEX_CODE)); +} + + +void DynamicMenuButton::loadFlexInsets() +{ + QMenu * m = menu(); + m->clear(); + string const & menutype = tbitem_.name_; + InsetLayout::InsetLyXType ftype; + if (menutype == "dynamic-custom-insets") + ftype = InsetLayout::CUSTOM; + else if (menutype == "dynamic-char-styles") + ftype = InsetLayout::CHARSTYLE; + else { + // this should have been taken care of earlier + LASSERT(false, return); + } + + TextClass::InsetLayouts const & inset_layouts = + d->text_class_->insetLayouts(); + for (auto const & iit : inset_layouts) { + InsetLayout const & il = iit.second; + if (il.lyxtype() != ftype) + continue; + docstring const name = iit.first; + QString const loc_item = toqstr(translateIfPossible( + prefixIs(name, from_ascii("Flex:")) ? + name.substr(5) : name)); + FuncRequest func(LFUN_FLEX_INSERT, + from_ascii("\"") + name + from_ascii("\""), FuncRequest::TOOLBAR); + Action * act = + new Action(func, getIcon(func, false), loc_item, loc_item, this); + m->addAction(act); + } +} + + void GuiToolbar::add(ToolbarItem const & item) { switch (item.type_) { @@ -299,15 +433,22 @@ void GuiToolbar::add(ToolbarItem const & item) case ToolbarItem::ICONPALETTE: addWidget(new PaletteButton(this, item)); break; - case ToolbarItem::POPUPMENU: { - addWidget(new MenuButton(this, item, false)); + addWidget(new StaticMenuButton(this, item, false)); break; } case ToolbarItem::STICKYPOPUPMENU: { - addWidget(new MenuButton(this, item, true)); + addWidget(new StaticMenuButton(this, item, true)); break; } + case ToolbarItem::DYNAMICMENU: { + // we only handle certain things + if (DynamicMenuButton::isMenuType(item.name_)) + addWidget(new DynamicMenuButton(this, item)); + else + LYXERR0("Unknown dynamic menu type: " << item.name_); + break; + } case ToolbarItem::COMMAND: { if (!getStatus(*item.func_).unknown()) addAction(addItem(item)); diff --git a/src/frontends/qt4/GuiToolbar.h b/src/frontends/qt4/GuiToolbar.h index badd59930a..c82134790b 100644 --- a/src/frontends/qt4/GuiToolbar.h +++ b/src/frontends/qt4/GuiToolbar.h @@ -20,6 +20,8 @@ #include #include +#include "support/strfwd.h" + class QSettings; namespace lyx { @@ -38,30 +40,78 @@ class LayoutBox; class ToolbarInfo; class ToolbarItem; -class MenuButton : public QToolButton +class MenuButtonBase : public QToolButton { Q_OBJECT public: /// - MenuButton(GuiToolbar * bar, ToolbarItem const & item, - bool const sticky = false); + MenuButtonBase(GuiToolbar * bar, ToolbarItem const & item); -private: +protected: /// - void initialize(); + virtual void initialize() = 0; /// GuiToolbar * bar_; /// ToolbarItem const & tbitem_; -private Q_SLOTS: +protected Q_SLOTS: /// void actionTriggered(QAction * action); + /// + virtual void updateTriggered() = 0; +}; + + +class StaticMenuButton : public MenuButtonBase +{ + Q_OBJECT +public: + /// + StaticMenuButton(GuiToolbar * bar, ToolbarItem const & item, + bool const sticky = false); + +protected: + /// + void initialize(); + +protected Q_SLOTS: /// void updateTriggered(); }; +/// A menu which can be populated on the fly. +/// The 'type' of menu must be given in the toolbar file +/// (stdtoolbars.inc, usually) and must be one of: +/// dynamic-custom-insets +/// dynamic-char-styles +/// To add a new one of these, you must add a routine, like +/// loadFlexInsets, that will populate the menu, and call it from +/// updateTriggered. Make sure to add the new type to isMenuType(). +class DynamicMenuButton : public MenuButtonBase +{ + Q_OBJECT +public: + /// + DynamicMenuButton(GuiToolbar * bar, ToolbarItem const & item); + /// + ~DynamicMenuButton(); + /// + static bool isMenuType(std::string const & s); +protected: + /// + void initialize(); + /// + void loadFlexInsets(); + /// pimpl so we don't have to include big files + class Private; + Private * d; +protected Q_SLOTS: + /// + void updateTriggered(); +}; + class GuiToolbar : public QToolBar { @@ -107,6 +157,8 @@ public: /// Action * addItem(ToolbarItem const & item); + /// + GuiView const & owner() { return owner_; } Q_SIGNALS: /// diff --git a/src/frontends/qt4/Toolbars.cpp b/src/frontends/qt4/Toolbars.cpp index a2f8a0bec7..bf4617cd5b 100644 --- a/src/frontends/qt4/Toolbars.cpp +++ b/src/frontends/qt4/Toolbars.cpp @@ -74,10 +74,12 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) TO_EXPORTFORMATS, TO_IMPORTFORMATS, TO_UPDATEFORMATS, - TO_VIEWFORMATS + TO_VIEWFORMATS, + TO_DYNAMICMENU }; struct LexerKeyword toolTags[] = { + { "dynamicmenu", TO_DYNAMICMENU}, { "end", TO_ENDTOOLBAR }, { "exportformats", TO_EXPORTFORMATS }, { "iconpalette", TO_ICONPALETTE }, @@ -155,6 +157,16 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) } break; + case TO_DYNAMICMENU: { + if (lex.next(true)) { + string const name = lex.getString(); + lex.next(true); + docstring const label = lex.getDocString(); + add(ToolbarItem(ToolbarItem::DYNAMICMENU, name, label)); + } + break; + } + case TO_STICKYPOPUPMENU: if (lex.next(true)) { string const pname = lex.getString(); diff --git a/src/frontends/qt4/Toolbars.h b/src/frontends/qt4/Toolbars.h index a65d05ebec..a4acb419cb 100644 --- a/src/frontends/qt4/Toolbars.h +++ b/src/frontends/qt4/Toolbars.h @@ -44,7 +44,9 @@ public: /// a button that expands a menu but remembers the last choice STICKYPOPUPMENU, /// - ICONPALETTE + ICONPALETTE, + /// + DYNAMICMENU }; ToolbarItem(Type type, -- 2.39.5