- fl_addtopup(menu, ". . .%d");
- break;
- }
- size_type j = min(label_list.size(),
- i+max_number_of_items2);
-
- string label;
- label += (label_list[i].size() > max_item_length2)
- ? label_list[i].substr(0, max_item_length2-1) + "$"
- : label_list[i];
- label += "..";
- label += (label_list[j-1].size() > max_item_length2)
- ? label_list[j-1].substr(0, max_item_length2-1) + "$"
- : label += label_list[j-1];
-
- if (smn.size() < max_number_of_menus) {
- int menu2 = fl_newpup(win);
- smn.push_back(menu2);
- for (size_type k = i; k < j; ++k) {
- int action = (type == "goto")
- ? lyxaction.getPseudoAction(LFUN_REF_GOTO,
- label_list[k])
- : lyxaction.getPseudoAction(LFUN_REF_INSERT,
- type + "|++||++|"
- + label_list[k]);
- string label2 = label_list[k];
- if (label2.size() > max_item_length)
- label2 = label2.substr(0, max_item_length-1) + "$";
- label2 += "%x" + tostr(action);
- fl_addtopup(menu2, label2.c_str());
- }
- label += "%m";
- fl_addtopup(menu, label.c_str(), menu2);
- } else {
- label += "%d";
- fl_addtopup(menu, label.c_str());
- }
- }
- }
-}
-
-
-void Menubar::Pimpl::add_references(int menu, string const & extra_label,
- vector<int> & smn, Window win)
-{
- //xgettext:no-c-format
- static char const * MenuNames[6] = { N_("Insert Reference%m"),
- //xgettext:no-c-format
- N_("Insert Page Number%m"),
- //xgettext:no-c-format
- N_("Insert vref%m"),
- //xgettext:no-c-format
- N_("Insert vpageref%m"),
- //xgettext:no-c-format
- N_("Insert Pretty Ref%m"),
- //xgettext:no-c-format
- N_("Goto Reference%m") };
-
- int const EMPTY = 1;
- int const SGML = 2;
- int const READONLY = 4;
-
- static int MenuFlags[6] = {
- EMPTY | READONLY,
- EMPTY | READONLY,
- EMPTY | READONLY | SGML,
- EMPTY | READONLY | SGML,
- EMPTY | READONLY | SGML,
- EMPTY };
-
- static string const MenuTypes[6] = {
- "ref", "pageref", "vref", "vpageref", "prettyref", "goto" };
-
- vector<string> label_list = owner_->buffer()->getLabelList();
-
- int flag = 0;
- if (label_list.empty())
- flag += EMPTY;
- if (owner_->buffer()->isSGML())
- flag += SGML;
- if (owner_->buffer()->isReadonly())
- flag += READONLY;
-
- int max_nonempty = -1;
- for (int i = 0; i < 6; ++i)
- if ((MenuFlags[i] & flag) == 0)
- max_nonempty = i;
-
- for (int i = 0; i < 6; ++i) {
- if ((MenuFlags[i] & flag) == 0) {
- string label = _(MenuNames[i]);
- if (i == max_nonempty)
- label += extra_label;
- if (smn.size() < max_number_of_menus) {
- int menu2 = fl_newpup(win);
- smn.push_back(menu2);
- add_references2(menu2, smn, win, label_list,
- MenuTypes[i]);
- fl_addtopup(menu, label.c_str(), menu2);
- } else {
- label += "%d";
- fl_addtopup(menu, label.c_str());