From: Jean-Marc Lasgouttes Date: Fri, 25 Jul 2003 21:34:45 +0000 (+0000) Subject: towards saner frontends (?). Part II: the menubar (now it is possible to switch front... X-Git-Tag: 1.6.10~16470 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=c7f1fcdc65d5d2873ff0446cb658ac1340fc1b82;p=features.git towards saner frontends (?). Part II: the menubar (now it is possible to switch frontend without recompiling GUII code) git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7361 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/config/ChangeLog b/config/ChangeLog index 978a3bfd03..89491f3d38 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,8 @@ +2003-07-25 Jean-Marc Lasgouttes + + * configure.in: + * configure.ac: remove frontend directories from FRONTEND_INCLUDES + 2003-07-22 John Levon * configure.ac: diff --git a/config/configure.ac b/config/configure.ac index 2c134b819e..a0f114b98f 100644 --- a/config/configure.ac +++ b/config/configure.ac @@ -177,7 +177,6 @@ case "$lyx_use_frontend" in RPM_FRONTEND="xforms" RPM_FRONTEND_DEPS='libforms >= 1.0' FRONTEND_GUILIB="frontends/xforms/libxforms.la" - FRONTEND_INCLUDES="-I\$(srcdir)/xforms" FRONTEND_INFO=" libXpm version: ${XPM_VERSION}\n\ libforms version: ${XFORMS_VERSION}\n" ;; @@ -192,7 +191,7 @@ dnl AC_SUBST(GNOME_FRONTEND_LIBS) dnl FRONTEND="xforms gnome" dnl FRONTEND_GUILIB="gnome/*.lo" dnl FRONTEND_LDFLAGS="${GNOME_FRONTEND_LIBS}" -dnl FRONTEND_INCLUDES="-I\${srcdir}/gnome -I\${srcdir}/xforms ${GNOME_FRONTEND_CFLAGS} " +dnl FRONTEND_INCLUDES="${GNOME_FRONTEND_CFLAGS}" dnl FRONTEND_LIBS="@XPM_LIB@ @XFORMS_LIB@ ${GNOME_FRONTEND_LIBS}" dnl ;; qt) @@ -200,7 +199,7 @@ dnl ;; RPM_FRONTEND_DEPS='qt >= 2.2.1' FRONTEND="qt2" FRONTEND_GUILIB="frontends/qt2/libqt2.la" - FRONTEND_INCLUDES="-I\${srcdir}/qt2 \$(QT_INCLUDES)" + FRONTEND_INCLUDES="\$(QT_INCLUDES)" FRONTEND_INFO=" Qt version: ${QT_VERSION}\n" ;; *) diff --git a/config/configure.in b/config/configure.in index 336edfcf71..98d0f458a2 100644 --- a/config/configure.in +++ b/config/configure.in @@ -174,7 +174,6 @@ case "$lyx_use_frontend" in RPM_FRONTEND="xforms" RPM_FRONTEND_DEPS='libforms >= 1.0' FRONTEND_GUILIB="xforms/*.lo xforms/forms/*.lo" - FRONTEND_INCLUDES="-I\$(srcdir)/xforms" FRONTEND_LIBS="@XFORMS_IMAGE_LIB@ @XFORMS_LIB@ @XPM_LIB@" FRONTEND_INFO=" libXpm version: ${XPM_VERSION}\n\ libforms version: ${XFORMS_VERSION}\n" @@ -193,7 +192,7 @@ dnl AC_SUBST(GNOME_FRONTEND_LIBS) dnl FRONTEND="xforms gnome" dnl FRONTEND_GUILIB="gnome/*.lo" dnl FRONTEND_LDFLAGS="${GNOME_FRONTEND_LIBS}" -dnl FRONTEND_INCLUDES="-I\${srcdir}/gnome -I\${srcdir}/xforms ${GNOME_FRONTEND_CFLAGS} " +dnl FRONTEND_INCLUDES="${GNOME_FRONTEND_CFLAGS} " dnl FRONTEND_LIBS="@XPM_LIB@ @XFORMS_LIB@ ${GNOME_FRONTEND_LIBS}";; qt) QT_DO_IT_ALL @@ -201,8 +200,8 @@ dnl FRONTEND_LIBS="@XPM_LIB@ @XFORMS_LIB@ ${GNOME_FRONTEND_LIBS}";; RPM_FRONTEND_DEPS='qt >= 2.2.1' FRONTEND="qt2" FRONTEND_GUILIB="qt2/*.lo qt2/ui/*.lo qt2/moc/*.lo qt2/ui/moc/*.lo" - FRONTEND_LDFLAGS="\$(QT_LDFLAGS)" - FRONTEND_INCLUDES="-I\${srcdir}/qt2 \$(QT_INCLUDES)" + FRONTEND_LDFLAGS='$(QT_LDFLAGS)' + FRONTEND_INCLUDES='$(QT_INCLUDES)' FRONTEND_LIBS="\$(QT_LIB)" FRONTEND_INFO=" Qt version: ${QT_VERSION}\n" ;; diff --git a/po/POTFILES.in b/po/POTFILES.in index 819b1966a7..4fd6289d9a 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -130,6 +130,7 @@ src/frontends/xforms/FormUrl.C src/frontends/xforms/FormVCLog.C src/frontends/xforms/FormWrap.C src/frontends/xforms/Menubar_pimpl.C +src/frontends/xforms/XFormsMenubar.C src/frontends/xforms/XMiniBuffer.C src/frontends/xforms/xformsBC.h src/frontends/xforms/xforms_helpers.C diff --git a/src/frontends/ChangeLog b/src/frontends/ChangeLog index 0331a9a882..76f0356731 100644 --- a/src/frontends/ChangeLog +++ b/src/frontends/ChangeLog @@ -1,3 +1,13 @@ +2003-07-25 Jean-Marc Lasgouttes + + * Menubar.h: do not use a pimpl, but rather an abstract class + + * Menubar.C: removed + +2003-07-25 Jean-Marc Lasgouttes + + * Toolbar.h: do not use a pimpl, but rather an abstract class + 2003-07-21 Angus Leeming * screen.C (c-tor, greyOut): use namespace lyx::graphics diff --git a/src/frontends/Makefile.am b/src/frontends/Makefile.am index f7ba3d4085..803e0f7d0f 100644 --- a/src/frontends/Makefile.am +++ b/src/frontends/Makefile.am @@ -6,7 +6,7 @@ DIST_SUBDIRS = controllers xforms qt2 gnome noinst_LTLIBRARIES = libfrontends.la -INCLUDES = $(FRONTEND_INCLUDES) -I$(srcdir)/.. $(BOOST_INCLUDES) +INCLUDES = -I$(srcdir)/.. $(BOOST_INCLUDES) libfrontends_la_SOURCES = \ Alert.C \ @@ -20,7 +20,6 @@ libfrontends_la_SOURCES = \ LyXScreenFactory.h \ LyXView.C \ LyXView.h \ - Menubar.C \ Menubar.h \ Painter.C \ Painter.h \ diff --git a/src/frontends/Menubar.C b/src/frontends/Menubar.C deleted file mode 100644 index d13d73db4a..0000000000 --- a/src/frontends/Menubar.C +++ /dev/null @@ -1,39 +0,0 @@ -/** - * \file Menubar.C - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Jean-Marc Lasgouttes - * - * Full author contact details are available in file CREDITS - */ - -#include - - -#include "Menubar.h" -#include "MenuBackend.h" -#include "Menubar_pimpl.h" - -Menubar::Menubar(LyXView * o, MenuBackend const & md) -{ - pimpl_ = new Pimpl(o, md); -} - - -Menubar::~Menubar() -{ - delete pimpl_; -} - - -void Menubar::openByName(string const & name) -{ - pimpl_->openByName(name); -} - - -void Menubar::update() -{ - pimpl_->update(); -} diff --git a/src/frontends/Menubar.h b/src/frontends/Menubar.h index 5bef504b2d..10b734ed5a 100644 --- a/src/frontends/Menubar.h +++ b/src/frontends/Menubar.h @@ -5,6 +5,7 @@ * Licence details can be found in the file COPYING. * * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes * * Full author contact details are available in file CREDITS */ @@ -15,32 +16,17 @@ #include "LString.h" -class LyXView; -class MenuBackend; - /** * The LyX GUI independent menubar class - * The GUI interface is implemented in the corresponding Menubar_pimpl class. + * The GUI interface is implemented in the frontends */ class Menubar { public: /// - Menubar(LyXView * o, MenuBackend const &); - /// - ~Menubar(); + virtual ~Menubar() {} /// Opens a top-level submenu given its name - void openByName(string const &); + virtual void openByName(string const &) = 0; /// update the state of the menuitems - void update(); - - - //I disable this temporarily until I find a nice way to make it work - //with compaq cxx. (Jean-Marc) - // Is this a new comment? (Lgb) - struct Pimpl; - friend struct Pimpl; -private: - /// - Pimpl * pimpl_; + virtual void update() = 0; }; #endif // MENUBAR_H diff --git a/src/frontends/qt2/ChangeLog b/src/frontends/qt2/ChangeLog index 52d3a27f16..3b75a43a45 100644 --- a/src/frontends/qt2/ChangeLog +++ b/src/frontends/qt2/ChangeLog @@ -1,3 +1,13 @@ +2003-07-25 Jean-Marc Lasgouttes + + * QLMenubar.h: + * QLMenubar.C: derives from Menubar (replaces Menubar::Pimpl) + + * Menubar_pimpl.C: + * Menubar_pimpl.h: removed + + * QtView.C: modified because of changes above + 2003-07-25 Jean-Marc Lasgouttes * QLToolbar.h: diff --git a/src/frontends/qt2/Makefile.am b/src/frontends/qt2/Makefile.am index d111884f76..df4aee221b 100644 --- a/src/frontends/qt2/Makefile.am +++ b/src/frontends/qt2/Makefile.am @@ -25,7 +25,7 @@ libqt2_la_SOURCES = \ FileDialog.C \ LyXKeySymFactory.C \ LyXScreenFactory.C \ - Menubar_pimpl.C Menubar_pimpl.h \ + QLMenubar.C QLMenubar.h \ qtTimeout.C qtTimeout.h \ QAbout.C QAbout.h \ QBibitem.C QBibitem.h \ diff --git a/src/frontends/qt2/Menubar_pimpl.C b/src/frontends/qt2/Menubar_pimpl.C deleted file mode 100644 index 5a5ee63689..0000000000 --- a/src/frontends/qt2/Menubar_pimpl.C +++ /dev/null @@ -1,94 +0,0 @@ -/** - * \file qt2/Menubar_pimpl.C - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Lars Gullik Bjønnes - * - * Full author contact details are available in file CREDITS - */ - -#include - - -#include "Menubar_pimpl.h" -#include "MenuBackend.h" -#include "LyXAction.h" -#include "kbmap.h" -#include "buffer.h" -#include "lyxfunc.h" -#include "FloatList.h" -#include "support/lstrings.h" -#include "support/LAssert.h" -#include "qt_helpers.h" -#include "debug.h" - -#include "QtView.h" -#include "QLPopupMenu.h" - -#include -#include - -#include - -using std::endl; -using std::vector; -using std::max; -using std::min; -using std::for_each; -using std::pair; - - -Menubar::Pimpl::Pimpl(LyXView * view, MenuBackend const & mbe) - : owner_(static_cast(view)), menubackend_(mbe) -{ - Menu::const_iterator m = mbe.getMenubar().begin(); - Menu::const_iterator end = mbe.getMenubar().end(); - for (; m != end; ++m) { - pair menu = - createMenu(owner_->menuBar(), &(*m), this, true); - name_map_[m->submenuname()] = menu.second; -#ifdef Q_WS_MAC - /* The qt/mac menu code has a very silly hack that - moves some menu entries that it recognizes by name - (ex: "Preferences...") to the "LyX" menu. This - feature can only work if the menu entries are - always available. Since we build menus on demand, - we have to have a reasonable default value before - the menus have been explicitely opened. (JMarc) - */ - menu.second->showing(); -#endif - } -} - - -Menubar::Pimpl::~Pimpl() -{} - - -void Menubar::Pimpl::openByName(string const & name) -{ - NameMap::const_iterator const cit = name_map_.find(name); - if (cit == name_map_.end()) - return; - - // this will have to do I'm afraid. - cit->second->exec(QCursor::pos()); -} - - -void Menubar::Pimpl::update() -{} - - -QtView * Menubar::Pimpl::view() -{ - return owner_; -} - - -MenuBackend const & Menubar::Pimpl::backend() -{ - return menubackend_; -} diff --git a/src/frontends/qt2/Menubar_pimpl.h b/src/frontends/qt2/Menubar_pimpl.h deleted file mode 100644 index 20d0fb448b..0000000000 --- a/src/frontends/qt2/Menubar_pimpl.h +++ /dev/null @@ -1,57 +0,0 @@ -// -*- C++ -*- -/** - * \file qt2/Menubar_pimpl.h - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Lars Gullik Bjønnes - * \author John Levon - * - * Full author contact details are available in file CREDITS - */ - - -#ifndef MENUBAR_PIMPL_H -#define MENUBAR_PIMPL_H - - -#include "frontends/Menubar.h" -#include "LString.h" -#include - -class LyXView; -class QtView; -class MenuBackend; -class QLPopupMenu; - -struct Menubar::Pimpl { -public: - Pimpl(LyXView *, MenuBackend const &); - - ~Pimpl(); - - /// opens a top-level submenu given its name - void openByName(string const &); - - /// update the state of the menuitems - not needed - void update(); - - /// return the owning view - QtView * view(); - - /// return the menu controller - MenuBackend const & backend(); -private: - /// owning view - QtView * owner_; - - /// menu controller - MenuBackend const & menubackend_; - - typedef std::map NameMap; - - /// name to menu for openByName - NameMap name_map_; -}; - -#endif // MENUBAR_PIMPL_H diff --git a/src/frontends/qt2/QLMenubar.C b/src/frontends/qt2/QLMenubar.C new file mode 100644 index 0000000000..3c603255d0 --- /dev/null +++ b/src/frontends/qt2/QLMenubar.C @@ -0,0 +1,89 @@ +/** + * \file qt2/QLMenubar.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author John Levon + * + * Full author contact details are available in file CREDITS + */ + +#include + +#include "MenuBackend.h" +#include "LyXAction.h" +#include "kbmap.h" +#include "buffer.h" +#include "lyxfunc.h" +#include "FloatList.h" +#include "support/lstrings.h" +#include "support/LAssert.h" +#include "qt_helpers.h" +#include "debug.h" + +#include "QtView.h" +#include "QLMenubar.h" +#include "QLPopupMenu.h" + +#include +#include + +#include + +using std::endl; +using std::vector; +using std::max; +using std::min; +using std::for_each; +using std::pair; + + +QLMenubar::QLMenubar(LyXView * view, MenuBackend const & mbe) + : owner_(static_cast(view)), menubackend_(mbe) +{ + Menu::const_iterator m = mbe.getMenubar().begin(); + Menu::const_iterator end = mbe.getMenubar().end(); + for (; m != end; ++m) { + pair menu = + createMenu(owner_->menuBar(), &(*m), this, true); + name_map_[m->submenuname()] = menu.second; +#ifdef Q_WS_MAC + /* The qt/mac menu code has a very silly hack that + moves some menu entries that it recognizes by name + (ex: "Preferences...") to the "LyX" menu. This + feature can only work if the menu entries are + always available. Since we build menus on demand, + we have to have a reasonable default value before + the menus have been explicitely opened. (JMarc) + */ + menu.second->showing(); +#endif + } +} + + +void QLMenubar::openByName(string const & name) +{ + NameMap::const_iterator const cit = name_map_.find(name); + if (cit == name_map_.end()) + return; + + // this will have to do I'm afraid. + cit->second->exec(QCursor::pos()); +} + + +void QLMenubar::update() +{} + + +QtView * QLMenubar::view() +{ + return owner_; +} + + +MenuBackend const & QLMenubar::backend() +{ + return menubackend_; +} diff --git a/src/frontends/qt2/QLMenubar.h b/src/frontends/qt2/QLMenubar.h new file mode 100644 index 0000000000..d92f4e678e --- /dev/null +++ b/src/frontends/qt2/QLMenubar.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +/** + * \file qt2/QLMenubar.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes + * \author John Levon + * + * Full author contact details are available in file CREDITS + */ + + +#ifndef QLMENUBAR_H +#define QLMENUBAR_H + +#include "frontends/Menubar.h" +#include "LString.h" +#include + +class LyXView; +class QtView; +class MenuBackend; +class QLPopupMenu; + +class QLMenubar : public Menubar { +public: + QLMenubar(LyXView *, MenuBackend const &); + + /// opens a top-level submenu given its name + void openByName(string const &); + + /// update the state of the menuitems - not needed + void update(); + + /// return the owning view + QtView * view(); + + /// return the menu controller + MenuBackend const & backend(); +private: + /// owning view + QtView * owner_; + + /// menu controller + MenuBackend const & menubackend_; + + typedef std::map NameMap; + + /// name to menu for openByName + NameMap name_map_; +}; + +#endif // QLMENUBAR_H diff --git a/src/frontends/qt2/QLPopupMenu.C b/src/frontends/qt2/QLPopupMenu.C index 40b24685e1..676dd9ffd2 100644 --- a/src/frontends/qt2/QLPopupMenu.C +++ b/src/frontends/qt2/QLPopupMenu.C @@ -18,6 +18,7 @@ #include "QtView.h" +#include "QLMenubar.h" #include "QLPopupMenu.h" #include "qt_helpers.h" @@ -58,7 +59,7 @@ string const getLabel(MenuItem const & mi) pair -createMenu(QMenuData * parent, MenuItem const * item, Menubar::Pimpl * owner, +createMenu(QMenuData * parent, MenuItem const * item, QLMenubar * owner, bool is_toplevel) { // FIXME: leaks ?? @@ -68,7 +69,7 @@ createMenu(QMenuData * parent, MenuItem const * item, Menubar::Pimpl * owner, } -QLPopupMenu::QLPopupMenu(Menubar::Pimpl * owner, +QLPopupMenu::QLPopupMenu(QLMenubar * owner, string const & name, bool toplevel) : owner_(owner), name_(name) { diff --git a/src/frontends/qt2/QLPopupMenu.h b/src/frontends/qt2/QLPopupMenu.h index 38fe2984cb..df2368c52e 100644 --- a/src/frontends/qt2/QLPopupMenu.h +++ b/src/frontends/qt2/QLPopupMenu.h @@ -13,8 +13,6 @@ #define QLPOPUPMENU_H -#include "Menubar_pimpl.h" - #include #include "LString.h" @@ -23,18 +21,19 @@ class MenuBackend; class MenuItem; class Menu; class QMenuData; +class QLMenubar; class QLPopupMenu; /// create a sub-menu std::pair createMenu(QMenuData * parent, MenuItem const * item, - Menubar::Pimpl * owner, bool is_toplevel = false); + QLMenubar * owner, bool is_toplevel = false); /// a submenu class QLPopupMenu : public QPopupMenu { Q_OBJECT public: - QLPopupMenu(Menubar::Pimpl * owner, + QLPopupMenu(QLMenubar * owner, string const & name, bool toplevel); /// populate the menu @@ -44,7 +43,7 @@ public slots: void showing(); private: /// our owning menubar - Menubar::Pimpl * owner_; + QLMenubar * owner_; /// the name of this menu string name_; diff --git a/src/frontends/qt2/QtView.C b/src/frontends/qt2/QtView.C index 6e411efc37..e9162aa5c5 100644 --- a/src/frontends/qt2/QtView.C +++ b/src/frontends/qt2/QtView.C @@ -21,7 +21,6 @@ #include "lyxfunc.h" #include "BufferView.h" -#include "frontends/Menubar.h" #include "frontends/Dialogs.h" #include "frontends/Timeout.h" @@ -29,6 +28,7 @@ #include "QtView.h" #include "QLToolbar.h" +#include "QLMenubar.h" #include "qfont_loader.h" #include "QCommandBuffer.h" #include "qt_helpers.h" @@ -61,7 +61,7 @@ QtView::QtView(unsigned int width, unsigned int height) bufferview_.reset(new BufferView(this, 0, 0, width, height)); - menubar_.reset(new Menubar(this, menubackend)); + menubar_.reset(new QLMenubar(this, menubackend)); toolbar_.reset(new QLToolbar(this)); toolbar_->init(); diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index 5048b25a16..c1cd64ac4d 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,10 +1,22 @@ -2003-07-25 Jean-Marc Lasgouttes +2003-07-25 Jean-Marc Lasgouttes - * + * XFormsMenubar.h: + * XFormsMenubar.C: derives from Menubar (replaces Menubar::Pimpl) -2003-07-25 Jean-Marc Lasgouttes + * Menubar_pimpl.C: + * Menubar_pimpl.h: removed + + * XFormsView.C: modified because of changes above + +2003-07-25 Jean-Marc Lasgouttes * XFormsToolbar.h: + * XFormsToolbar.C: derives from Toolbar (replaces Toolbar::Pimpl) + + * Toolbar_pimpl.C: + * Toolbar_pimpl.h: removed + + * XFormsView.C: modified because of changes above 2003-07-23 Angus Leeming diff --git a/src/frontends/xforms/Makefile.am b/src/frontends/xforms/Makefile.am index 988c2f5954..6b826efce8 100644 --- a/src/frontends/xforms/Makefile.am +++ b/src/frontends/xforms/Makefile.am @@ -151,8 +151,8 @@ libxforms_la_SOURCES = \ FormWrap.h \ LyXKeySymFactory.C \ LyXScreenFactory.C \ - Menubar_pimpl.C \ - Menubar_pimpl.h \ + XFormsMenubar.C \ + XFormsMenubar.h \ RadioButtonGroup.C \ RadioButtonGroup.h \ XFormsToolbar.C \ diff --git a/src/frontends/xforms/Menubar_pimpl.C b/src/frontends/xforms/Menubar_pimpl.C deleted file mode 100644 index ea868c8dd1..0000000000 --- a/src/frontends/xforms/Menubar_pimpl.C +++ /dev/null @@ -1,400 +0,0 @@ -/** - * \file xforms/Menubar_pimpl.C - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Lars Gullik Bjønnes - * \author Jean-Marc Lasgouttes - * - * Full author contact details are available in file CREDITS - */ - -#include - -#include "Menubar_pimpl.h" -#include "MenuBackend.h" -#include "XFormsView.h" -#include "lyxfunc.h" -#include "support/lstrings.h" -#include "support/tostr.h" -#include "support/LAssert.h" -#include "gettext.h" -#include "debug.h" -#include "lyx_forms.h" - -//#include - -#include - -using namespace lyx::support; - -using std::endl; -using std::vector; -using std::max; -using std::min; -using std::for_each; - -typedef vector::size_type size_type; - -namespace { - -// Some constants -int const MENU_LABEL_SIZE = FL_NORMAL_SIZE; -int const MENU_LABEL_STYLE = FL_NORMAL_STYLE; -int const mheight = 30; -int const mbheight= 22; -// where to place the menubar? -int const yloc = (mheight - mbheight)/2; //air + bw; -int const mbadd = 20; // menu button add (to width) -// Some space between buttons on the menubar -int const air = 2; -char const * menu_tabstop = "aa"; -char const * default_tabstop = "aaaaaaaa"; -// We do not want to mix position values in a menu (like the index of -// a submenu) with the action numbers which convey actual information. -// Therefore we offset all the action values by an arbitrary large -// constant. -int const action_offset = 1000; - -// This is used a few times below. -inline -int string_width(string const & str) -{ - return fl_get_string_widthTAB(MENU_LABEL_STYLE, MENU_LABEL_SIZE, - str.c_str(), - static_cast(str.length())); -} - -} // namespace anon - - -extern "C" { - - //Defined later, used in makeMenubar(). - static - void C_Menubar_Pimpl_MenuCallback(FL_OBJECT * ob, long button) - { - Menubar::Pimpl::MenuCallback(ob, button); - } - -} - - -Menubar::Pimpl::Pimpl(LyXView * view, MenuBackend const & mb) - : owner_(static_cast(view)), menubackend_(&mb) -{ - makeMenubar(menubackend_->getMenubar()); -} - - -Menubar::Pimpl::~Pimpl() -{} - - -void Menubar::Pimpl::makeMenubar(Menu const & menu) -{ - FL_FORM * form = owner_->getForm(); - int moffset = 0; - - // Create menu frame if there is non yet. - FL_OBJECT * frame = fl_add_frame(FL_UP_FRAME, 0, 0, - form->w, mheight, ""); - fl_set_object_resize(frame, FL_RESIZE_ALL); - fl_set_object_gravity(frame, NorthWestGravity, - NorthEastGravity); - - Menu::const_iterator i = menu.begin(); - Menu::const_iterator end = menu.end(); - for (; i != end; ++i) { - FL_OBJECT * obj; - if (i->kind() != MenuItem::Submenu) { - lyxerr << "ERROR: Menubar::Pimpl::createMenubar:" - " only submenus can appear in a menubar" - << endl; - continue; - } - string const label = i->label(); - string const shortcut = '#' + i->shortcut(); - int const width = string_width(label); - obj = fl_add_button(FL_MENU_BUTTON, - air + moffset, yloc, - width + mbadd, - mbheight, - label.c_str()); - fl_set_object_boxtype(obj, FL_FLAT_BOX); - fl_set_object_color(obj, FL_MCOL, FL_MCOL); - fl_set_object_lsize(obj, MENU_LABEL_SIZE); - fl_set_object_lstyle(obj, MENU_LABEL_STYLE); - fl_set_object_resize(obj, FL_RESIZE_ALL); - fl_set_object_gravity(obj, NorthWestGravity, - NorthWestGravity); - moffset += obj->w + air; - fl_set_object_shortcut(obj, shortcut.c_str(), 1); - fl_set_object_callback(obj, C_Menubar_Pimpl_MenuCallback, 1); - - boost::shared_ptr - iteminfo(new ItemInfo(this, new MenuItem(*i), obj)); - buttonlist_.push_back(iteminfo); - obj->u_vdata = iteminfo.get(); - } - -} - - -void Menubar::Pimpl::update() -{ - // nothing yet -} - - -void Menubar::Pimpl::openByName(string const & name) -{ - for (ButtonList::const_iterator cit = buttonlist_.begin(); - cit != buttonlist_.end(); ++cit) { - if ((*cit)->item_->submenuname() == name) { - MenuCallback((*cit)->obj_, 1); - return; - } - } - - lyxerr << "Menubar::Pimpl::openByName: menu " - << name << " not found" << endl; -} - - -namespace { - -Menu::size_type const max_number_of_items = 25; - -int get_new_submenu(vector & smn, Window win) -{ - static size_type max_number_of_menus = 32; - if (smn.size() >= max_number_of_menus) - max_number_of_menus = - fl_setpup_maxpup(static_cast(2*smn.size())); - int menu = fl_newpup(win); - fl_setpup_softedge(menu, true); - fl_setpup_bw(menu, -1); - smn.push_back(menu); - return menu; -} - - -string const fixlabel(string const & str) -{ - return subst(str, "%", "%%"); -} - - - -} // namespace anon - - - -int Menubar::Pimpl::create_submenu(Window win, XFormsView * view, - Menu const & menu, vector & smn) -{ - const int menuid = get_new_submenu(smn, win); - lyxerr[Debug::GUI] << "Menubar::Pimpl::create_submenu: creating " - << menu.name() << " as menuid=" << menuid << endl; - - // Compute the size of the largest label (because xforms is - // not able to support shortcuts correctly...) - int max_width = 0; - string widest_label; - Menu::const_iterator end = menu.end(); - for (Menu::const_iterator i = menu.begin(); i != end; ++i) { - MenuItem const & item = (*i); - if (item.kind() == MenuItem::Command) { - string const label = item.label() + '\t'; - int const width = string_width(label); - if (width > max_width) { - max_width = width; - widest_label = label; - } - } - } - lyxerr[Debug::GUI] << "max_width=" << max_width - << ", widest_label=\"" << widest_label - << '"' << endl; - - size_type count = 0; - int curmenuid = menuid; - for (Menu::const_iterator i = menu.begin(); i != end; ++i) { - MenuItem const & item = (*i); - - ++count; - // add a More... submenu if the menu is too long (but - // not just for one extra entry!) - if (count > max_number_of_items && (i+1) != end) { - int tmpmenuid = get_new_submenu(smn, win); - lyxerr[Debug::GUI] << "Too many items, creating " - << "new menu " << tmpmenuid << endl; - string label = _("More"); - label += "...%m"; - fl_addtopup(curmenuid, label.c_str(), tmpmenuid); - count = 0; - curmenuid = tmpmenuid; - } - - switch (item.kind()) { - case MenuItem::Command: - case MenuItem::Submenu: - { - // Build the menu label from all the info - string label = fixlabel(item.label()); - FuncStatus const flag = item.status(); - int submenuid = 0; - - // Is there a key binding? - string const binding = item.binding(); - if (!binding.empty()) { - // Try to be clever and add just enough - // tabs to align shortcuts. - do - label += '\t'; - while (string_width(label) < max_width + 5); - label += binding; - } - - // Is there a separator after the item? - if ((i+1) != end - && (i + 1)->kind() == MenuItem::Separator) - label += "%l"; - - // Modify the entry using the function status - if (flag.onoff(true)) - label += "%B"; - if (flag.onoff(false)) - label += "%b"; - if (flag.disabled()) - label += "%i"; - - // Add the shortcut - string shortcut = item.shortcut(); - if (!shortcut.empty()) { - shortcut += lowercase(shortcut[0]); - label += "%h"; - } - - // Finally add the action/submenu - if (item.kind() == MenuItem::Submenu) { - // create the submenu - submenuid = - create_submenu(win, view, - *item.submenu(), smn); - if (submenuid == -1) - return -1; - label += "%x" + tostr(smn.size()); - lyxerr[Debug::GUI] - << "Menu: " << submenuid - << " (at index " << smn.size() - << "), "; - } else { - // Add the action - label += "%x" + tostr(item.action() - + action_offset); - lyxerr[Debug::GUI] << "Action: \"" - << item.action() << "\", "; - } - - // Add everything to the menu - fl_addtopup(curmenuid, label.c_str(), - shortcut.c_str()); - if (item.kind() == MenuItem::Submenu) - fl_setpup_submenu(curmenuid, smn.size(), - submenuid); - - lyxerr[Debug::GUI] << "label \"" << label - << "\", binding \"" << binding - << "\", shortcut \"" << shortcut - << "\" (added to menu " - << curmenuid << ')' << endl; - break; - } - - case MenuItem::Separator: - // already done, and if it was the first one, - // we just ignore it. - --count; - break; - - - default: - lyxerr << "Menubar::Pimpl::create_submenu: " - "this should not happen" << endl; - break; - } - } - return menuid; -} - - -void Menubar::Pimpl::MenuCallback(FL_OBJECT * ob, long button) -{ - ItemInfo * iteminfo = static_cast(ob->u_vdata); - XFormsView * view = iteminfo->pimpl_->owner_; - MenuItem const * item = iteminfo->item_.get(); - - if (button == 1) { - // set the pseudo menu-button - fl_set_object_boxtype(ob, FL_DOWN_BOX); - fl_set_button(ob, 0); - fl_redraw_object(ob); - } - - // Paranoia check - Assert(item->kind() == MenuItem::Submenu); - - // set tabstop length - fl_set_tabstop(menu_tabstop); - - MenuBackend const * menubackend_ = iteminfo->pimpl_->menubackend_; - Menu tomenu; - Menu const frommenu = menubackend_->getMenu(item->submenuname()); - menubackend_->expand(frommenu, tomenu, view); - vector submenus; - int menu = iteminfo->pimpl_->create_submenu(FL_ObjWin(ob), view, - tomenu, submenus); - if (menu != -1) { - // place popup - fl_setpup_position(view->getForm()->x + ob->x, - view->getForm()->y + ob->y + ob->h + 10); - int choice = fl_dopup(menu); - - if (button == 1) { - // set the pseudo menu-button back - fl_set_object_boxtype(ob, FL_FLAT_BOX); - fl_redraw_object(ob); - } - - // If the action value is too low, then it is not a - // valid action, but something else. - if (choice >= action_offset + 1) { - view->getLyXFunc().dispatch(choice - action_offset, true); - } else { - lyxerr[Debug::GUI] - << "MenuCallback: ignoring bogus action " - << choice << endl; - } - } else { - lyxerr << "Error in MenuCallback" << endl; - } - - for_each(submenus.begin(), submenus.end(), fl_freepup); - // restore tabstop length - fl_set_tabstop(default_tabstop); - -} - - -Menubar::Pimpl::ItemInfo::ItemInfo - (Menubar::Pimpl * p, MenuItem const * i, FL_OBJECT * o) - : pimpl_(p), obj_(o) -{ - item_.reset(i); -} - - -Menubar::Pimpl::ItemInfo::~ItemInfo() -{} diff --git a/src/frontends/xforms/Menubar_pimpl.h b/src/frontends/xforms/Menubar_pimpl.h deleted file mode 100644 index 2e04224e37..0000000000 --- a/src/frontends/xforms/Menubar_pimpl.h +++ /dev/null @@ -1,88 +0,0 @@ -// -*- C++ -*- -/** - * \file xforms/Menubar_pimpl.h - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Lars Gullik Bjønnes - * - * Full author contact details are available in file CREDITS - */ - -#ifndef MENUBAR_PIMPL_H -#define MENUBAR_PIMPL_H - - -#include "LString.h" -#include "frontends/Menubar.h" - -#include - -#include "forms_fwd.h" -#include // Window - -#include -#include - -class LyXView; -class XFormsView; -class Menu; -class MenuItem; - -/** The LyX GUI independent menubar class - The GUI interface is implemented in the corresponding Menubar_pimpl class. - */ -struct Menubar::Pimpl { -public: - /// - Pimpl(LyXView *, MenuBackend const &); - /// - ~Pimpl(); - - /// update the state of the menuitems - void update(); - - /// Opens a top-level submenu given its name - void openByName(string const &); - - /// - static void MenuCallback(FL_OBJECT *, long); - -private: - /// - void add_toc(int menu, string const & extra_label, - std::vector & smn, Window win); - /// - void add_references(int menu, string const & extra_label, - std::vector & smn, Window win); - /// - int create_submenu(Window win, XFormsView * view, - Menu const & menu, std::vector & smn); - - // - void makeMenubar(Menu const & menu); - - /// - XFormsView * owner_; - /// - MenuBackend const * menubackend_; - /// - struct ItemInfo { - /// - ItemInfo(Menubar::Pimpl * p, MenuItem const * i, - FL_OBJECT * o); - ~ItemInfo(); - /// - Menubar::Pimpl * pimpl_; - /// - boost::shared_ptr item_; - /// - FL_OBJECT * obj_; - }; - - /// - typedef std::vector > ButtonList; - /// - ButtonList buttonlist_; -}; -#endif diff --git a/src/frontends/xforms/XFormsMenubar.C b/src/frontends/xforms/XFormsMenubar.C new file mode 100644 index 0000000000..c5e2c0ffb8 --- /dev/null +++ b/src/frontends/xforms/XFormsMenubar.C @@ -0,0 +1,400 @@ +/** + * \file XFormsMenubar.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * + * Full author contact details are available in file CREDITS + */ + +#include + +#include "XFormsMenubar.h" +#include "MenuBackend.h" +#include "XFormsView.h" +#include "lyxfunc.h" +#include "support/lstrings.h" +#include "support/tostr.h" +#include "support/LAssert.h" +#include "gettext.h" +#include "debug.h" +#include "lyx_forms.h" + +//#include + +#include + +using namespace lyx::support; + +using std::endl; +using std::vector; +using std::max; +using std::min; +using std::for_each; + +typedef vector::size_type size_type; + +namespace { + +// Some constants +int const MENU_LABEL_SIZE = FL_NORMAL_SIZE; +int const MENU_LABEL_STYLE = FL_NORMAL_STYLE; +int const mheight = 30; +int const mbheight= 22; +// where to place the menubar? +int const yloc = (mheight - mbheight)/2; //air + bw; +int const mbadd = 20; // menu button add (to width) +// Some space between buttons on the menubar +int const air = 2; +char const * menu_tabstop = "aa"; +char const * default_tabstop = "aaaaaaaa"; +// We do not want to mix position values in a menu (like the index of +// a submenu) with the action numbers which convey actual information. +// Therefore we offset all the action values by an arbitrary large +// constant. +int const action_offset = 1000; + +// This is used a few times below. +inline +int string_width(string const & str) +{ + return fl_get_string_widthTAB(MENU_LABEL_STYLE, MENU_LABEL_SIZE, + str.c_str(), + static_cast(str.length())); +} + +} // namespace anon + + +extern "C" { + + //Defined later, used in makeMenubar(). + static + void C_XFormsMenubar_MenuCallback(FL_OBJECT * ob, long button) + { + XFormsMenubar::MenuCallback(ob, button); + } + +} + + +XFormsMenubar::XFormsMenubar(LyXView * view, MenuBackend const & mb) + : owner_(static_cast(view)), menubackend_(&mb) +{ + makeMenubar(menubackend_->getMenubar()); +} + + +XFormsMenubar::~XFormsMenubar() +{} + + +void XFormsMenubar::makeMenubar(Menu const & menu) +{ + FL_FORM * form = owner_->getForm(); + int moffset = 0; + + // Create menu frame if there is non yet. + FL_OBJECT * frame = fl_add_frame(FL_UP_FRAME, 0, 0, + form->w, mheight, ""); + fl_set_object_resize(frame, FL_RESIZE_ALL); + fl_set_object_gravity(frame, NorthWestGravity, + NorthEastGravity); + + Menu::const_iterator i = menu.begin(); + Menu::const_iterator end = menu.end(); + for (; i != end; ++i) { + FL_OBJECT * obj; + if (i->kind() != MenuItem::Submenu) { + lyxerr << "ERROR: XFormsMenubar::createMenubar:" + " only submenus can appear in a menubar" + << endl; + continue; + } + string const label = i->label(); + string const shortcut = '#' + i->shortcut(); + int const width = string_width(label); + obj = fl_add_button(FL_MENU_BUTTON, + air + moffset, yloc, + width + mbadd, + mbheight, + label.c_str()); + fl_set_object_boxtype(obj, FL_FLAT_BOX); + fl_set_object_color(obj, FL_MCOL, FL_MCOL); + fl_set_object_lsize(obj, MENU_LABEL_SIZE); + fl_set_object_lstyle(obj, MENU_LABEL_STYLE); + fl_set_object_resize(obj, FL_RESIZE_ALL); + fl_set_object_gravity(obj, NorthWestGravity, + NorthWestGravity); + moffset += obj->w + air; + fl_set_object_shortcut(obj, shortcut.c_str(), 1); + fl_set_object_callback(obj, C_XFormsMenubar_MenuCallback, 1); + + boost::shared_ptr + iteminfo(new ItemInfo(this, new MenuItem(*i), obj)); + buttonlist_.push_back(iteminfo); + obj->u_vdata = iteminfo.get(); + } + +} + + +void XFormsMenubar::update() +{ + // nothing yet +} + + +void XFormsMenubar::openByName(string const & name) +{ + for (ButtonList::const_iterator cit = buttonlist_.begin(); + cit != buttonlist_.end(); ++cit) { + if ((*cit)->item_->submenuname() == name) { + MenuCallback((*cit)->obj_, 1); + return; + } + } + + lyxerr << "XFormsMenubar::openByName: menu " + << name << " not found" << endl; +} + + +namespace { + +Menu::size_type const max_number_of_items = 25; + +int get_new_submenu(vector & smn, Window win) +{ + static size_type max_number_of_menus = 32; + if (smn.size() >= max_number_of_menus) + max_number_of_menus = + fl_setpup_maxpup(static_cast(2*smn.size())); + int menu = fl_newpup(win); + fl_setpup_softedge(menu, true); + fl_setpup_bw(menu, -1); + smn.push_back(menu); + return menu; +} + + +string const fixlabel(string const & str) +{ + return subst(str, "%", "%%"); +} + + + +} // namespace anon + + + +int XFormsMenubar::create_submenu(Window win, XFormsView * view, + Menu const & menu, vector & smn) +{ + const int menuid = get_new_submenu(smn, win); + lyxerr[Debug::GUI] << "XFormsMenubar::create_submenu: creating " + << menu.name() << " as menuid=" << menuid << endl; + + // Compute the size of the largest label (because xforms is + // not able to support shortcuts correctly...) + int max_width = 0; + string widest_label; + Menu::const_iterator end = menu.end(); + for (Menu::const_iterator i = menu.begin(); i != end; ++i) { + MenuItem const & item = (*i); + if (item.kind() == MenuItem::Command) { + string const label = item.label() + '\t'; + int const width = string_width(label); + if (width > max_width) { + max_width = width; + widest_label = label; + } + } + } + lyxerr[Debug::GUI] << "max_width=" << max_width + << ", widest_label=\"" << widest_label + << '"' << endl; + + size_type count = 0; + int curmenuid = menuid; + for (Menu::const_iterator i = menu.begin(); i != end; ++i) { + MenuItem const & item = (*i); + + ++count; + // add a More... submenu if the menu is too long (but + // not just for one extra entry!) + if (count > max_number_of_items && (i+1) != end) { + int tmpmenuid = get_new_submenu(smn, win); + lyxerr[Debug::GUI] << "Too many items, creating " + << "new menu " << tmpmenuid << endl; + string label = _("More"); + label += "...%m"; + fl_addtopup(curmenuid, label.c_str(), tmpmenuid); + count = 0; + curmenuid = tmpmenuid; + } + + switch (item.kind()) { + case MenuItem::Command: + case MenuItem::Submenu: + { + // Build the menu label from all the info + string label = fixlabel(item.label()); + FuncStatus const flag = item.status(); + int submenuid = 0; + + // Is there a key binding? + string const binding = item.binding(); + if (!binding.empty()) { + // Try to be clever and add just enough + // tabs to align shortcuts. + do + label += '\t'; + while (string_width(label) < max_width + 5); + label += binding; + } + + // Is there a separator after the item? + if ((i+1) != end + && (i + 1)->kind() == MenuItem::Separator) + label += "%l"; + + // Modify the entry using the function status + if (flag.onoff(true)) + label += "%B"; + if (flag.onoff(false)) + label += "%b"; + if (flag.disabled()) + label += "%i"; + + // Add the shortcut + string shortcut = item.shortcut(); + if (!shortcut.empty()) { + shortcut += lowercase(shortcut[0]); + label += "%h"; + } + + // Finally add the action/submenu + if (item.kind() == MenuItem::Submenu) { + // create the submenu + submenuid = + create_submenu(win, view, + *item.submenu(), smn); + if (submenuid == -1) + return -1; + label += "%x" + tostr(smn.size()); + lyxerr[Debug::GUI] + << "Menu: " << submenuid + << " (at index " << smn.size() + << "), "; + } else { + // Add the action + label += "%x" + tostr(item.action() + + action_offset); + lyxerr[Debug::GUI] << "Action: \"" + << item.action() << "\", "; + } + + // Add everything to the menu + fl_addtopup(curmenuid, label.c_str(), + shortcut.c_str()); + if (item.kind() == MenuItem::Submenu) + fl_setpup_submenu(curmenuid, smn.size(), + submenuid); + + lyxerr[Debug::GUI] << "label \"" << label + << "\", binding \"" << binding + << "\", shortcut \"" << shortcut + << "\" (added to menu " + << curmenuid << ')' << endl; + break; + } + + case MenuItem::Separator: + // already done, and if it was the first one, + // we just ignore it. + --count; + break; + + + default: + lyxerr << "XFormsMenubar::create_submenu: " + "this should not happen" << endl; + break; + } + } + return menuid; +} + + +void XFormsMenubar::MenuCallback(FL_OBJECT * ob, long button) +{ + ItemInfo * iteminfo = static_cast(ob->u_vdata); + XFormsView * view = iteminfo->menubar_->owner_; + MenuItem const * item = iteminfo->item_.get(); + + if (button == 1) { + // set the pseudo menu-button + fl_set_object_boxtype(ob, FL_DOWN_BOX); + fl_set_button(ob, 0); + fl_redraw_object(ob); + } + + // Paranoia check + Assert(item->kind() == MenuItem::Submenu); + + // set tabstop length + fl_set_tabstop(menu_tabstop); + + MenuBackend const * menubackend_ = iteminfo->menubar_->menubackend_; + Menu tomenu; + Menu const frommenu = menubackend_->getMenu(item->submenuname()); + menubackend_->expand(frommenu, tomenu, view); + vector submenus; + int menu = iteminfo->menubar_->create_submenu(FL_ObjWin(ob), view, + tomenu, submenus); + if (menu != -1) { + // place popup + fl_setpup_position(view->getForm()->x + ob->x, + view->getForm()->y + ob->y + ob->h + 10); + int choice = fl_dopup(menu); + + if (button == 1) { + // set the pseudo menu-button back + fl_set_object_boxtype(ob, FL_FLAT_BOX); + fl_redraw_object(ob); + } + + // If the action value is too low, then it is not a + // valid action, but something else. + if (choice >= action_offset + 1) { + view->getLyXFunc().dispatch(choice - action_offset, true); + } else { + lyxerr[Debug::GUI] + << "MenuCallback: ignoring bogus action " + << choice << endl; + } + } else { + lyxerr << "Error in MenuCallback" << endl; + } + + for_each(submenus.begin(), submenus.end(), fl_freepup); + // restore tabstop length + fl_set_tabstop(default_tabstop); + +} + + +XFormsMenubar::ItemInfo::ItemInfo + (XFormsMenubar * p, MenuItem const * i, FL_OBJECT * o) + : menubar_(p), obj_(o) +{ + item_.reset(i); +} + + +XFormsMenubar::ItemInfo::~ItemInfo() +{} diff --git a/src/frontends/xforms/XFormsMenubar.h b/src/frontends/xforms/XFormsMenubar.h new file mode 100644 index 0000000000..552738b040 --- /dev/null +++ b/src/frontends/xforms/XFormsMenubar.h @@ -0,0 +1,85 @@ +// -*- C++ -*- +/** + * \file XFormsMenubar.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes + * + * Full author contact details are available in file CREDITS + */ + +#ifndef XFORMSMENUBAR_H +#define XFORMSMENUBAR_H + +#include "LString.h" +#include "frontends/Menubar.h" + +#include + +#include "forms_fwd.h" +#include // Window + +#include +#include + +class LyXView; +class XFormsView; +class Menu; +class MenuItem; +class MenuBackend; + +class XFormsMenubar : public Menubar { +public: + /// + XFormsMenubar(LyXView *, MenuBackend const &); + /// + ~XFormsMenubar(); + + /// update the state of the menuitems + void update(); + + /// Opens a top-level submenu given its name + void openByName(string const &); + + /// + static void MenuCallback(FL_OBJECT *, long); + +private: + /// + void add_toc(int menu, string const & extra_label, + std::vector & smn, Window win); + /// + void add_references(int menu, string const & extra_label, + std::vector & smn, Window win); + /// + int create_submenu(Window win, XFormsView * view, + Menu const & menu, std::vector & smn); + + // + void makeMenubar(Menu const & menu); + + /// + XFormsView * owner_; + /// + MenuBackend const * menubackend_; + /// + struct ItemInfo { + /// + ItemInfo(XFormsMenubar * p, MenuItem const * i, + FL_OBJECT * o); + ~ItemInfo(); + /// + XFormsMenubar * menubar_; + /// + boost::shared_ptr item_; + /// + FL_OBJECT * obj_; + }; + + /// + typedef std::vector > ButtonList; + /// + ButtonList buttonlist_; +}; +#endif diff --git a/src/frontends/xforms/XFormsToolbar.C b/src/frontends/xforms/XFormsToolbar.C index 2c08f12071..f2e3ebc30a 100644 --- a/src/frontends/xforms/XFormsToolbar.C +++ b/src/frontends/xforms/XFormsToolbar.C @@ -1,5 +1,5 @@ /** - * \file xforms/XFormsToolbar.C + * \file XFormsToolbar.C * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * diff --git a/src/frontends/xforms/XFormsToolbar.h b/src/frontends/xforms/XFormsToolbar.h index 89559a60b8..e8a3f621e9 100644 --- a/src/frontends/xforms/XFormsToolbar.h +++ b/src/frontends/xforms/XFormsToolbar.h @@ -1,6 +1,6 @@ // -*- C++ -*- /** - * \file xforms/XFormsToolbar.h + * \file XFormsToolbar.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * diff --git a/src/frontends/xforms/XFormsView.C b/src/frontends/xforms/XFormsView.C index 948f47f44b..5608ab0ffe 100644 --- a/src/frontends/xforms/XFormsView.C +++ b/src/frontends/xforms/XFormsView.C @@ -15,12 +15,12 @@ #include "lyx_forms.h" #include "XMiniBuffer.h" +#include "XFormsMenubar.h" #include "XFormsToolbar.h" #include "debug.h" #include "intl.h" #include "lyxrc.h" #include "support/filetools.h" // OnlyFilename() -#include "frontends/Menubar.h" #include "frontends/Timeout.h" #include "frontends/Dialogs.h" #include "MenuBackend.h" @@ -140,7 +140,7 @@ void XFormsView::create_form_form_main(int width, int height) int const air = 2; int const bw = abs(fl_get_border_width()); - menubar_.reset(new Menubar(this, menubackend)); + menubar_.reset(new XFormsMenubar(this, menubackend)); toolbar_.reset(new XFormsToolbar(this, air, 30 + air + bw)); toolbar_->init();