mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 11:16:55 +00:00
Move some special code from menu frontend to backend.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1079 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
ebfcf1c0e7
commit
df13cd9f7c
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
|||||||
|
2000-10-04 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
|
||||||
|
|
||||||
|
* src/frontends/xforms/Menubar_pimpl.C (create_submenu): use
|
||||||
|
Menu::expand.
|
||||||
|
(add_lastfiles): removed.
|
||||||
|
(add_documents): removed.
|
||||||
|
(add_formats): removed.
|
||||||
|
|
||||||
|
* src/frontends/Menubar.C: remove useless "using" directive.
|
||||||
|
|
||||||
|
* src/MenuBackend.h: add a new MenuItem constructor.
|
||||||
|
|
||||||
|
* src/MenuBackend.[Ch] (Menu::expand): new method. Used in the
|
||||||
|
xforms frontend.
|
||||||
|
|
||||||
2000-10-04 Allan Rae <rae@lyx.org>
|
2000-10-04 Allan Rae <rae@lyx.org>
|
||||||
|
|
||||||
* lib/Makefile.am (listerrors):
|
* lib/Makefile.am (listerrors):
|
||||||
|
@ -21,10 +21,18 @@
|
|||||||
#include "LyXAction.h"
|
#include "LyXAction.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
|
#include "lastfiles.h"
|
||||||
|
#include "bufferlist.h"
|
||||||
|
#include "exporter.h"
|
||||||
|
#include "support/filetools.h"
|
||||||
|
|
||||||
extern LyXAction lyxaction;
|
extern LyXAction lyxaction;
|
||||||
|
extern LastFiles * lastfiles;
|
||||||
|
extern BufferList bufferlist;
|
||||||
|
|
||||||
using std::endl;
|
using std::endl;
|
||||||
|
using std::vector;
|
||||||
|
using std::pair;
|
||||||
|
|
||||||
// This is the global menu definition
|
// This is the global menu definition
|
||||||
MenuBackend menubackend;
|
MenuBackend menubackend;
|
||||||
@ -184,6 +192,83 @@ Menu & Menu::read(LyXLex & lex)
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Menu::expand(Menu & tomenu, Buffer *buf) const
|
||||||
|
{
|
||||||
|
for (const_iterator cit = begin();
|
||||||
|
cit != end() ; ++cit) {
|
||||||
|
switch ((*cit).kind()) {
|
||||||
|
case MenuItem::Lastfiles: {
|
||||||
|
int ii = 1;
|
||||||
|
for (LastFiles::const_iterator lfit = lastfiles->begin();
|
||||||
|
lfit != lastfiles->end() && ii < 10;
|
||||||
|
++lfit, ++ii) {
|
||||||
|
string label = tostr(ii) + ". "
|
||||||
|
+ MakeDisplayPath((*lfit), 30)
|
||||||
|
+ '|' + tostr(ii);
|
||||||
|
int action = lyxaction.
|
||||||
|
getPseudoAction(LFUN_FILE_OPEN,
|
||||||
|
(*lfit));
|
||||||
|
tomenu.add(MenuItem(MenuItem::Command,
|
||||||
|
label, action));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MenuItem::Documents: {
|
||||||
|
vector<string> names = bufferlist.getFileNames();
|
||||||
|
|
||||||
|
if (names.empty()) {
|
||||||
|
tomenu.add(MenuItem(MenuItem::Command,
|
||||||
|
_("No Documents Open!"),
|
||||||
|
LFUN_NOACTION));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (vector<string>::const_iterator docit = names.begin();
|
||||||
|
docit != names.end() ; ++docit) {
|
||||||
|
int action =
|
||||||
|
lyxaction.getPseudoAction(LFUN_SWITCHBUFFER, *docit);
|
||||||
|
string label = MakeDisplayPath(*docit, 30);
|
||||||
|
tomenu.add(MenuItem(MenuItem::Command,
|
||||||
|
label, action));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MenuItem::ViewFormats:
|
||||||
|
case MenuItem::UpdateFormats:
|
||||||
|
case MenuItem::ExportFormats: {
|
||||||
|
vector<pair<string,string> > names;
|
||||||
|
kb_action action;
|
||||||
|
if ((*cit).kind() == MenuItem::ViewFormats) {
|
||||||
|
names = Exporter::GetViewableFormats(buf);
|
||||||
|
action = LFUN_PREVIEW;
|
||||||
|
} else if ((*cit).kind() == MenuItem::UpdateFormats) {
|
||||||
|
names = Exporter::GetViewableFormats(buf);
|
||||||
|
action = LFUN_UPDATE;
|
||||||
|
} else {
|
||||||
|
names = Exporter::GetExportableFormats(buf);
|
||||||
|
action = LFUN_EXPORT;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (vector<pair<string,string> >::const_iterator fit = names.begin();
|
||||||
|
fit != names.end() ; ++fit) {
|
||||||
|
int action2 =
|
||||||
|
lyxaction.getPseudoAction(action,
|
||||||
|
(*fit).first);
|
||||||
|
string label = (*fit).second;
|
||||||
|
tomenu.add(MenuItem(MenuItem::Command,
|
||||||
|
label, action2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
default:
|
||||||
|
tomenu.add(*cit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MenuBackend::read(LyXLex & lex)
|
void MenuBackend::read(LyXLex & lex)
|
||||||
{
|
{
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class LyXLex;
|
class LyXLex;
|
||||||
|
class Buffer;
|
||||||
|
|
||||||
///
|
///
|
||||||
class MenuItem {
|
class MenuItem {
|
||||||
@ -46,13 +47,13 @@ public:
|
|||||||
///
|
///
|
||||||
References,
|
References,
|
||||||
/** This is a list of viewable formats
|
/** This is a list of viewable formats
|
||||||
typically for the Documents menu. */
|
typically for the File->View menu. */
|
||||||
ViewFormats,
|
ViewFormats,
|
||||||
/** This is a list of updatable formats
|
/** This is a list of updatable formats
|
||||||
typically for the Documents menu. */
|
typically for the File->Update menu. */
|
||||||
UpdateFormats,
|
UpdateFormats,
|
||||||
/** This is a list of exportable formats
|
/** This is a list of exportable formats
|
||||||
typically for the Documents menu. */
|
typically for the File->Export menu. */
|
||||||
ExportFormats
|
ExportFormats
|
||||||
};
|
};
|
||||||
/// Create a Command type MenuItem
|
/// Create a Command type MenuItem
|
||||||
@ -60,6 +61,13 @@ public:
|
|||||||
string const & label = string(),
|
string const & label = string(),
|
||||||
string const & command = string(),
|
string const & command = string(),
|
||||||
bool optional = false);
|
bool optional = false);
|
||||||
|
MenuItem(Kind kind,
|
||||||
|
string const & label,
|
||||||
|
int action,
|
||||||
|
bool optional = false)
|
||||||
|
: kind_(kind), label_(label),
|
||||||
|
action_(action), submenu_(), optional_(optional) {}
|
||||||
|
|
||||||
/// The label of a given menuitem
|
/// The label of a given menuitem
|
||||||
string const label() const { return token(label_, '|', 0); }
|
string const label() const { return token(label_, '|', 0); }
|
||||||
///
|
///
|
||||||
@ -94,12 +102,18 @@ public:
|
|||||||
///
|
///
|
||||||
typedef ItemList::const_iterator const_iterator;
|
typedef ItemList::const_iterator const_iterator;
|
||||||
///
|
///
|
||||||
explicit Menu(string const & name, bool mb = false)
|
explicit Menu(string const & name = string(), bool mb = false)
|
||||||
: menubar_(mb), name_(name) {}
|
: menubar_(mb), name_(name) {}
|
||||||
///
|
///
|
||||||
Menu & add(MenuItem const &);
|
Menu & add(MenuItem const &);
|
||||||
///
|
///
|
||||||
Menu & read(LyXLex &);
|
Menu & read(LyXLex &);
|
||||||
|
/// Expands some special entries of the menu
|
||||||
|
/** The entries with the following kind are exanded to a
|
||||||
|
sequence of Command MenuItems: Lastfiles, Documents,
|
||||||
|
ViewFormats, ExportFormats, UpdateFormats
|
||||||
|
*/
|
||||||
|
void expand(Menu & tomenu, Buffer *) const;
|
||||||
///
|
///
|
||||||
bool menubar() const { return menubar_; }
|
bool menubar() const { return menubar_; }
|
||||||
///
|
///
|
||||||
|
@ -20,9 +20,6 @@
|
|||||||
#include "Menubar.h"
|
#include "Menubar.h"
|
||||||
#include "Menubar_pimpl.h"
|
#include "Menubar_pimpl.h"
|
||||||
|
|
||||||
using std::endl;
|
|
||||||
|
|
||||||
|
|
||||||
Menubar::Menubar(LyXView * o, MenuBackend const & md)
|
Menubar::Menubar(LyXView * o, MenuBackend const & md)
|
||||||
{
|
{
|
||||||
pimpl_ = new Pimpl(o, md);
|
pimpl_ = new Pimpl(o, md);
|
||||||
|
@ -14,22 +14,18 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cctype>
|
//#include <cctype>
|
||||||
#include "support/lstrings.h"
|
#include "support/lstrings.h"
|
||||||
#include "support/filetools.h"
|
|
||||||
#include "support/LAssert.h"
|
#include "support/LAssert.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "LyXAction.h"
|
#include "LyXAction.h"
|
||||||
#include "lyxfunc.h"
|
#include "lyxfunc.h"
|
||||||
#include "kbmap.h"
|
#include "kbmap.h"
|
||||||
#include "bufferlist.h"
|
#include "buffer.h"
|
||||||
#include "lastfiles.h"
|
|
||||||
#include "LyXView.h"
|
#include "LyXView.h"
|
||||||
#include "MenuBackend.h"
|
#include "MenuBackend.h"
|
||||||
#include "Menubar_pimpl.h"
|
#include "Menubar_pimpl.h"
|
||||||
#include "exporter.h"
|
|
||||||
|
|
||||||
using std::pair;
|
|
||||||
using std::endl;
|
using std::endl;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
using std::max;
|
using std::max;
|
||||||
@ -39,8 +35,6 @@ typedef vector<int>::size_type size_type;
|
|||||||
|
|
||||||
extern kb_keymap * toplevel_keymap;
|
extern kb_keymap * toplevel_keymap;
|
||||||
extern LyXAction lyxaction;
|
extern LyXAction lyxaction;
|
||||||
extern BufferList bufferlist;
|
|
||||||
extern LastFiles * lastfiles;
|
|
||||||
|
|
||||||
// Some constants
|
// Some constants
|
||||||
const int MENU_LABEL_SIZE = FL_NORMAL_SIZE;
|
const int MENU_LABEL_SIZE = FL_NORMAL_SIZE;
|
||||||
@ -187,52 +181,6 @@ void Menubar::Pimpl::openByName(string const & name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Menubar::Pimpl::add_lastfiles(int menu, string const & extra_label)
|
|
||||||
{
|
|
||||||
int ii = 1;
|
|
||||||
for (LastFiles::const_iterator cit = lastfiles->begin();
|
|
||||||
cit != lastfiles->end() && ii < 10; ++cit, ++ii) {
|
|
||||||
|
|
||||||
int action =
|
|
||||||
lyxaction.getPseudoAction(LFUN_FILE_OPEN, (*cit));
|
|
||||||
string label = tostr(ii) + ". "
|
|
||||||
+ MakeDisplayPath((*cit),30)
|
|
||||||
+ "%x" + tostr(action) + "%h";
|
|
||||||
if ((cit + 1) == lastfiles->end())
|
|
||||||
label += extra_label;
|
|
||||||
string shortcut = tostr(ii) + "#" + tostr(ii);
|
|
||||||
lyxerr[Debug::GUI] << "shortcut is " << shortcut <<
|
|
||||||
endl;
|
|
||||||
|
|
||||||
fl_addtopup(menu, label.c_str(), shortcut.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void Menubar::Pimpl::add_documents(int menu, string const & extra_label)
|
|
||||||
{
|
|
||||||
vector<string> names = bufferlist.getFileNames();
|
|
||||||
|
|
||||||
if (names.empty()) {
|
|
||||||
fl_addtopup(menu,_("No Documents Open!%i"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (vector<string>::const_iterator cit = names.begin();
|
|
||||||
cit != names.end() ; ++cit) {
|
|
||||||
int action =
|
|
||||||
lyxaction.getPseudoAction(LFUN_SWITCHBUFFER, *cit);
|
|
||||||
string label = MakeDisplayPath(*cit, 30)
|
|
||||||
+ "%x" + tostr(action);
|
|
||||||
if ((cit + 1) == names.end())
|
|
||||||
label += extra_label;
|
|
||||||
|
|
||||||
fl_addtopup(menu, label.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string limit_string_length(string const & str)
|
string limit_string_length(string const & str)
|
||||||
{
|
{
|
||||||
string::size_type const max_item_length = 45;
|
string::size_type const max_item_length = 45;
|
||||||
@ -497,28 +445,6 @@ void Menubar::Pimpl::add_references(int menu, string const & extra_label,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Menubar::Pimpl::add_formats(int menu, string const & extra_label,
|
|
||||||
kb_action action, bool viewable)
|
|
||||||
{
|
|
||||||
vector<pair<string,string> > names =
|
|
||||||
viewable
|
|
||||||
? Exporter::GetViewableFormats(owner_->buffer())
|
|
||||||
: Exporter::GetExportableFormats(owner_->buffer());
|
|
||||||
|
|
||||||
for (vector<pair<string,string> >::const_iterator cit = names.begin();
|
|
||||||
cit != names.end() ; ++cit) {
|
|
||||||
int action2 =
|
|
||||||
lyxaction.getPseudoAction(action, (*cit).first);
|
|
||||||
string label = (*cit).second
|
|
||||||
+ "%x" + tostr(action2);
|
|
||||||
if ((cit + 1) == names.end())
|
|
||||||
label += extra_label;
|
|
||||||
|
|
||||||
fl_addtopup(menu, label.c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
|
int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
|
||||||
string const & menu_name,
|
string const & menu_name,
|
||||||
vector<int> & smn)
|
vector<int> & smn)
|
||||||
@ -528,7 +454,8 @@ int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
|
|||||||
<< menu_name << "'" << endl;
|
<< menu_name << "'" << endl;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
Menu md = menubackend_->getMenu(menu_name);
|
Menu md = Menu();
|
||||||
|
menubackend_->getMenu(menu_name).expand(md, owner_->buffer());
|
||||||
|
|
||||||
int menu = fl_newpup(win);
|
int menu = fl_newpup(win);
|
||||||
fl_setpup_softedge(menu, true);
|
fl_setpup_softedge(menu, true);
|
||||||
@ -657,14 +584,6 @@ int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
|
|||||||
// we just ignore it.
|
// we just ignore it.
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MenuItem::Documents:
|
|
||||||
add_documents(menu, extra_label);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MenuItem::Lastfiles:
|
|
||||||
add_lastfiles(menu, extra_label);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MenuItem::Toc:
|
case MenuItem::Toc:
|
||||||
add_toc(menu, extra_label, smn, win);
|
add_toc(menu, extra_label, smn, win);
|
||||||
break;
|
break;
|
||||||
@ -673,16 +592,13 @@ int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
|
|||||||
add_references(menu, extra_label, smn, win);
|
add_references(menu, extra_label, smn, win);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MenuItem::Documents:
|
||||||
|
case MenuItem::Lastfiles:
|
||||||
case MenuItem::ViewFormats:
|
case MenuItem::ViewFormats:
|
||||||
add_formats(menu, extra_label, LFUN_PREVIEW, true);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MenuItem::UpdateFormats:
|
case MenuItem::UpdateFormats:
|
||||||
add_formats(menu, extra_label, LFUN_UPDATE, true);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MenuItem::ExportFormats:
|
case MenuItem::ExportFormats:
|
||||||
add_formats(menu, extra_label, LFUN_EXPORT, false);
|
lyxerr << "Menubar::Pimpl::create_submenu: "
|
||||||
|
"this should not happen" << endl;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -29,8 +29,6 @@ class MenuBackend;
|
|||||||
class MenuItem;
|
class MenuItem;
|
||||||
class Menu;
|
class Menu;
|
||||||
|
|
||||||
#include "debug.h"
|
|
||||||
|
|
||||||
/** The LyX GUI independent menubar class
|
/** The LyX GUI independent menubar class
|
||||||
The GUI interface is implemented in the corresponding Menubar_pimpl class.
|
The GUI interface is implemented in the corresponding Menubar_pimpl class.
|
||||||
*/
|
*/
|
||||||
@ -48,18 +46,6 @@ public:
|
|||||||
///
|
///
|
||||||
static void MenuCallback(FL_OBJECT *, long);
|
static void MenuCallback(FL_OBJECT *, long);
|
||||||
|
|
||||||
/** Add to "menu" the list of last opened files
|
|
||||||
(add "extra_label" to the last entry)
|
|
||||||
*/
|
|
||||||
void add_lastfiles(int menu, string const & extra_label);
|
|
||||||
/** Add to "menu" the list of opened documents
|
|
||||||
(add "extra_label" to the last entry)
|
|
||||||
*/
|
|
||||||
void add_documents(int menu, string const & extra_label);
|
|
||||||
/// Add to "menu" the list of exportable/viewable formats
|
|
||||||
/// (add "extra_label" to the last entry)
|
|
||||||
void add_formats(int menu, string const & extra_label,
|
|
||||||
kb_action action, bool viewable);
|
|
||||||
///
|
///
|
||||||
void add_toc(int menu, string const & extra_label,
|
void add_toc(int menu, string const & extra_label,
|
||||||
std::vector<int> & smn, Window win);
|
std::vector<int> & smn, Window win);
|
||||||
|
Loading…
Reference in New Issue
Block a user