X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finseturl.C;h=4bd7f5765a8d581e512c828af431d7aafdd426ab;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=4d6fba49f33c24220d0f0487c96bcf3dcd42b49c;hpb=dfe1bc44b44903faf77ef454c98c4c3e56c1d5e3;p=lyx.git diff --git a/src/insets/inseturl.C b/src/insets/inseturl.C index 4d6fba49f3..4bd7f5765a 100644 --- a/src/insets/inseturl.C +++ b/src/insets/inseturl.C @@ -1,209 +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 - -extern BufferView * current_view; -extern void UpdateInset(Inset * inset, bool mark_dirty = true); -InsetUrl::InsetUrl(string const & cmd) - : fd_form_url(0) -{ - scanCommand(cmd); - 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(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 "support/std_ostream.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; -} +namespace lyx { +using support::subst; -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; - } -} +using std::string; +using std::ostream; -void InsetUrl::CloseUrlCB(FL_OBJECT * ob, long) -{ - InsetUrl * inset = static_cast(ob->u_vdata); - 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 = current_view->currentBuffer(); - - 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; - UpdateInset(inset); - } - - 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; - } -} +InsetUrl::InsetUrl(InsetCommandParams const & p) + : InsetCommand(p, "url") +{} -extern "C" void C_InsetUrl_CloseUrlCB(FL_OBJECT * ob, long data) +docstring const InsetUrl::getScreenLabel(Buffer const &) const { - InsetUrl::CloseUrlCB(ob, data); -} - + docstring const temp = + (getCmdName() == "url") ? _("Url: ") : _("HtmlUrl: "); -void InsetUrl::Edit(int, int) -{ - static int ow = -1, oh; + docstring url; - if(current_view->currentBuffer()->isReadonly()) - WarnReadonly(); + if (!getParam("name").empty()) + url += getParam("name"); + else + url += getParam("target"); - if (!fd_form_url) { - fd_form_url = create_form_form_url(); - fd_form_url->button_close->u_vdata = this; - fl_set_form_atclose(fd_form_url->form_url,CancelCloseBoxCB, 0); - } - 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); + // elide if long + if (url.length() > 30) { + url = url.substr(0, 10) + "..." + + url.substr(url.length() - 17, url.length()); } + return temp + url; } -string InsetUrl::getScreenLabel() const +int InsetUrl::latex(Buffer const &, odocstream & os, + OutputParams const & runparams) const { - string temp; - if (flag == InsetUrl::HTML_URL) - temp += _("HtmlUrl: "); - else - temp += _("Url: "); - temp += getContents(); - if(!getOptions().empty()) { - temp += "||"; - temp += getOptions(); - } - return temp; + docstring const & name = getParam("name"); + if (!name.empty()) + os << name + ' '; + if (runparams.moving_arg) + os << "\\protect"; + os << "\\url{" << getParam("target") << '}'; + return 0; } -int InsetUrl::Latex(FILE * file, signed char fragile) +int InsetUrl::plaintext(Buffer const &, odocstream & os, + OutputParams const &) const { - string latex_output; - int res = Latex(latex_output, fragile); - fprintf(file, "%s", latex_output.c_str()); - - return res; + os << '[' << getParam("target"); + if (getParam("name").empty()) + os << ']'; + else + os << "||" << getParam("name") << ']'; + return 0; } -int InsetUrl::Latex(string &file, signed char fragile) +int InsetUrl::docbook(Buffer const &, odocstream & os, + OutputParams const &) const { - if (!getOptions().empty()) - file += getOptions() + ' '; - if (fragile) - file += "\\protect"; - - file += "\\url{" + getContents() + '}'; - + os << "" + << getParam("name") + << ""; return 0; } -int InsetUrl::Linuxdoc(string & file) +int InsetUrl::textString(Buffer const & buf, odocstream & os, + OutputParams const & op) const { - file += "<"+ getCmdName() + - " url=\"" + getContents()+"\"" + - " name=\"" + getOptions() +"\">"; - - return 0; + return plaintext(buf, os, op); } -int InsetUrl::DocBook(string & file) +void InsetUrl::validate(LaTeXFeatures & features) const { - file += "" + - getOptions() +""; - - return 0; + features.require("url"); } -void InsetUrl::Validate(LaTeXFeatures & features) const -{ - features.url = true; -} +} // namespace lyx