X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finseturl.C;h=4bd7f5765a8d581e512c828af431d7aafdd426ab;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=efffb87f998729ab7d1561fd16c41fa0b34c92f4;hpb=132fe5e1322fbc86a32692df51eba78d6b4e479c;p=lyx.git diff --git a/src/insets/inseturl.C b/src/insets/inseturl.C index efffb87f99..4bd7f5765a 100644 --- a/src/insets/inseturl.C +++ b/src/insets/inseturl.C @@ -1,244 +1,110 @@ -#include - -#include +/** + * \file inseturl.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author José Matos + * + * Full author contact details are available in file CREDITS. + */ -#ifdef __GNUG__ -#pragma implementation -#endif +#include -#include FORMS_H_LOCATION #include "inseturl.h" -#include "LString.h" -#include "commandtags.h" -#include "gettext.h" -#include "LaTeXFeatures.h" -#include "lyx_gui_misc.h" // CancelCloseBoxCB - -InsetUrl::InsetUrl(string const & cmd) - : fd_form_url(0) -{ - scanCommand(cmd); - if (getCmdName() == "url") - flag = InsetUrl::URL; - else - flag = InsetUrl::HTML_URL; -} - - -InsetUrl::InsetUrl(InsetCommand const & inscmd) - : fd_form_url(0) -{ - setCmdName(inscmd.getCmdName()); - setContents(inscmd.getContents()); - setOptions(inscmd.getOptions()); - if (getCmdName() == "url") - flag = InsetUrl::URL; - else - flag = InsetUrl::HTML_URL; -} +#include "dispatchresult.h" +#include "funcrequest.h" +#include "LaTeXFeatures.h" +#include "gettext.h" +#include "outputparams.h" +#include "support/lstrings.h" -InsetUrl::InsetUrl(string const & ins_name, string const & ins_cont, - string const & ins_opt) - : fd_form_url(0) -{ - setCmdName(ins_name); - setContents(ins_cont); - setOptions(ins_opt); - if (ins_name == "url") - flag = InsetUrl::URL; - else - flag = InsetUrl::HTML_URL; -} +#include "support/std_ostream.h" -InsetUrl::~InsetUrl() -{ - if (fd_form_url) { - fl_hide_form(fd_form_url->form_url); - fl_free_form(fd_form_url->form_url); - fd_form_url = 0; - } -} +namespace lyx { +using support::subst; -void InsetUrl::CloseUrlCB(FL_OBJECT * ob, long) -{ - Holder * holder = static_cast(ob->u_vdata); - - InsetUrl * inset = holder->inset; - BufferView * bv = holder->view; - - string url = fl_get_input(inset->fd_form_url->url_name); - string name = fl_get_input(inset->fd_form_url->name_name); - string cmdname; - if (fl_get_button(inset->fd_form_url->radio_html)) - cmdname = "htmlurl"; - else - cmdname = "url"; - - Buffer * buffer = bv->buffer(); - - if ((url != inset->getContents() || - name != inset->getOptions() || - cmdname != inset->getCmdName()) - && !(buffer->isReadonly()) ) { - buffer->markDirty(); - inset->setContents(url); - inset->setOptions(name); - inset->setCmdName(cmdname); - if (cmdname == "url") - inset->flag = InsetUrl::URL; - else - inset->flag = InsetUrl::HTML_URL; - bv->updateInset(inset, true); - } - - if (inset->fd_form_url) { - fl_hide_form(inset->fd_form_url->form_url); - fl_free_form(inset->fd_form_url->form_url); - inset->fd_form_url = 0; - } -} +using std::string; +using std::ostream; -extern "C" void C_InsetUrl_CloseUrlCB(FL_OBJECT * ob, long data) -{ - InsetUrl::CloseUrlCB(ob, data); -} +InsetUrl::InsetUrl(InsetCommandParams const & p) + : InsetCommand(p, "url") +{} -void InsetUrl::Edit(BufferView * bv, int, int, unsigned int) +docstring const InsetUrl::getScreenLabel(Buffer const &) const { - static int ow = -1, oh; + docstring const temp = + (getCmdName() == "url") ? _("Url: ") : _("HtmlUrl: "); - if(bv->buffer()->isReadonly()) - WarnReadonly(bv->buffer()->fileName()); - - if (!fd_form_url) { - fd_form_url = create_form_form_url(); - holder.inset = this; - fd_form_url->button_close->u_vdata = &holder; - fl_set_form_atclose(fd_form_url->form_url, - CancelCloseBoxCB, 0); - } - holder.view = bv; - fl_set_input(fd_form_url->url_name, getContents().c_str()); - fl_set_input(fd_form_url->name_name, getOptions().c_str()); - switch(flag) { - case InsetUrl::URL: - fl_set_button(fd_form_url->radio_html, 0); - break; - case InsetUrl::HTML_URL: - fl_set_button(fd_form_url->radio_html, 1); - break; - } - - if (fd_form_url->form_url->visible) { - fl_raise_form(fd_form_url->form_url); - } else { - fl_show_form(fd_form_url->form_url, - FL_PLACE_MOUSE | FL_FREE_SIZE, - FL_FULLBORDER, _("Insert Url")); - if (ow < 0) { - ow = fd_form_url->form_url->w; - oh = fd_form_url->form_url->h; - } - fl_set_form_minsize(fd_form_url->form_url, ow, oh); - } -} + docstring url; + if (!getParam("name").empty()) + url += getParam("name"); + else + url += getParam("target"); -string InsetUrl::getScreenLabel() const -{ - string temp; - if (flag == InsetUrl::HTML_URL) - temp += _("HtmlUrl: "); - else - temp += _("Url: "); - temp += getContents(); - if(!getOptions().empty()) { - temp += "||"; - temp += getOptions(); + // elide if long + if (url.length() > 30) { + url = url.substr(0, 10) + "..." + + url.substr(url.length() - 17, url.length()); } - return temp; + return temp + url; } -int InsetUrl::Latex(ostream & os, signed char fragile, bool free_spc) const +int InsetUrl::latex(Buffer const &, odocstream & os, + OutputParams const & runparams) const { -#ifdef USE_OSTREAM_ONLY - if (!getOptions().empty()) - os << getOptions() + ' '; - if (fragile) + docstring const & name = getParam("name"); + if (!name.empty()) + os << name + ' '; + if (runparams.moving_arg) os << "\\protect"; - os << "\\url{" << getContents() << '}'; - return 0; -#else - string latex_output; - int res = Latex(latex_output, fragile, free_spc); - os << latex_output; - - return res; -#endif -} - - -#ifndef USE_OSTREAM_ONLY -int InsetUrl::Latex(string & file, signed char fragile, bool /*free_spc*/) const -{ - if (!getOptions().empty()) - file += getOptions() + ' '; - if (fragile) - file += "\\protect"; - - file += "\\url{" + getContents() + '}'; - + os << "\\url{" << getParam("target") << '}'; return 0; } -int InsetUrl::Linuxdoc(string & file) const +int InsetUrl::plaintext(Buffer const &, odocstream & os, + OutputParams const &) const { - file += "<"+ getCmdName() + - " url=\"" + getContents()+"\"" + - " name=\"" + getOptions() +"\">"; - + os << '[' << getParam("target"); + if (getParam("name").empty()) + os << ']'; + else + os << "||" << getParam("name") << ']'; return 0; } -int InsetUrl::DocBook(string & file) const +int InsetUrl::docbook(Buffer const &, odocstream & os, + OutputParams const &) const { - file += "" + - getOptions() +""; - + os << "" + << getParam("name") + << ""; return 0; } -#else -int InsetUrl::Linuxdoc(ostream & os) const +int InsetUrl::textString(Buffer const & buf, odocstream & os, + OutputParams const & op) const { - os << "<" << getCmdName() - << " url=\"" << getContents() << "\"" - << " name=\"" << getOptions() << "\">"; - - return 0; + return plaintext(buf, os, op); } -int InsetUrl::DocBook(ostream & os) const +void InsetUrl::validate(LaTeXFeatures & features) const { - os << "" - << getOptions() << ""; - return 0; + features.require("url"); } -#endif -void InsetUrl::Validate(LaTeXFeatures & features) const -{ - features.url = true; -} +} // namespace lyx