-void MenuInsertLabel(BufferView * bv, string const & arg)
-{
- string label(arg);
- bv->owner()->prohibitInput();
- if (label.empty()) {
- Paragraph * par = bv->getLyXText()->cursor.par();
- LyXLayout_ptr layout = par->layout();
- if (layout->latextype == LATEX_PARAGRAPH && par->previous()) {
- Paragraph * par2 = par->previous();
-
- LyXLayout_ptr const & layout2 = par2->layout();
-
- if (layout2->latextype != LATEX_PARAGRAPH) {
- par = par2;
- layout = layout2;
- }
- }
- string text = layout->latexname().substr(0, 3);
- if (layout->latexname() == "theorem")
- text = "thm"; // Create a correct prefix for prettyref
-
- text += ":";
- if (layout->latextype == LATEX_PARAGRAPH ||
- lyxrc.label_init_length < 0)
- text.erase();
- string par_text = par->asString(bv->buffer(), false);
- for (int i = 0; i < lyxrc.label_init_length; ++i) {
- if (par_text.empty())
- break;
- string head;
- par_text = split(par_text, head, ' ');
- if (i > 0)
- text += '-'; // Is it legal to use spaces in
- // labels ?
- text += head;
- }
-
- pair<bool, string> result =
- Alert::askForText(_("Enter new label to insert:"), text);
- if (result.first) {
- label = frontStrip(strip(result.second));
- }
- }
- if (!label.empty()) {
- InsetCommandParams p("label", label);
- InsetLabel * inset = new InsetLabel(p);
- bv->insertInset(inset);
- }
- bv->owner()->allowInput();
-}
-
-