X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finseturl.C;h=ae2c16a9fe1028ce8dfef62db6b4a6dfe2470875;hb=3c8aba3b556871fb1100a2f98cd93d5d4e3f70c9;hp=f25a945c2083b03ba42506a0845b50f41de966a9;hpb=5fe1f30cdd6b9bb3d02ecec981d777514560072e;p=lyx.git diff --git a/src/insets/inseturl.C b/src/insets/inseturl.C index f25a945c20..ae2c16a9fe 100644 --- a/src/insets/inseturl.C +++ b/src/insets/inseturl.C @@ -1,6 +1,6 @@ #include -#include +#include #ifdef __GNUG__ #pragma implementation @@ -14,11 +14,10 @@ #include "LaTeXFeatures.h" #include "lyx_gui_misc.h" // CancelCloseBoxCB -extern BufferView *current_view; -extern void UpdateInset(Inset* inset, bool mark_dirty = true); +using std::ostream; InsetUrl::InsetUrl(string const & cmd) - : form(0) + : fd_form_url(0) { scanCommand(cmd); if (getCmdName() == "url") @@ -28,8 +27,8 @@ InsetUrl::InsetUrl(string const & cmd) } -InsetUrl::InsetUrl(InsetCommand const &inscmd) - : form(0) +InsetUrl::InsetUrl(InsetCommand const & inscmd) + : fd_form_url(0) { setCmdName(inscmd.getCmdName()); setContents(inscmd.getContents()); @@ -41,9 +40,9 @@ InsetUrl::InsetUrl(InsetCommand const &inscmd) } -InsetUrl::InsetUrl(string const &ins_name,string const &ins_cont, - string const &ins_opt) - : form(0) +InsetUrl::InsetUrl(string const & ins_name, string const & ins_cont, + string const & ins_opt) + : fd_form_url(0) { setCmdName(ins_name); setContents(ins_cont); @@ -57,26 +56,30 @@ InsetUrl::InsetUrl(string const &ins_name,string const &ins_cont, InsetUrl::~InsetUrl() { - if (form) { - fl_hide_form(form); - fl_free_form(form); - form = 0; + if (fd_form_url) { + fl_hide_form(fd_form_url->form_url); + fl_free_form(fd_form_url->form_url); + fd_form_url = 0; } } -void InsetUrl::CloseUrlCB(FL_OBJECT *ob, long) +void InsetUrl::CloseUrlCB(FL_OBJECT * ob, long) { - InsetUrl *inset = (InsetUrl*) ob->u_vdata; - string url = fl_get_input(inset->url_name); - string name = fl_get_input(inset->name_name); + 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->radio_html)) + if (fl_get_button(inset->fd_form_url->radio_html)) cmdname = "htmlurl"; else cmdname = "url"; - Buffer *buffer = current_view->currentBuffer(); + Buffer * buffer = bv->buffer(); if ((url != inset->getContents() || name != inset->getOptions() || @@ -90,59 +93,66 @@ void InsetUrl::CloseUrlCB(FL_OBJECT *ob, long) inset->flag = InsetUrl::URL; else inset->flag = InsetUrl::HTML_URL; - UpdateInset(inset); + bv->updateInset(inset, true); } - if (inset->form) { - fl_hide_form(inset->form); - inset->form = 0; + 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; } } -extern "C" void C_InsetUrl_CloseUrlCB(FL_OBJECT *ob, long) + +extern "C" void C_InsetUrl_CloseUrlCB(FL_OBJECT * ob, long data) +{ + InsetUrl::CloseUrlCB(ob, data); +} + + +char const * InsetUrl::EditMessage() const { - InsetUrl::CloseUrlCB(ob,0); + return _("Opened Url"); } -void InsetUrl::Edit(int, int) + +void InsetUrl::Edit(BufferView * bv, int, int, unsigned int) { - if(current_view->currentBuffer()->isReadonly()) - WarnReadonly(); - - if (!form) { - FL_OBJECT *obj; - form = fl_bgn_form(FL_NO_BOX, 530, 170); - obj = fl_add_box(FL_UP_BOX,0,0,530,170,""); - url_name = obj = fl_add_input(FL_NORMAL_INPUT,50,30,460,30,idex(_("Url|#U"))); - fl_set_button_shortcut(obj,scex(_("Url|#U")),1); - name_name = obj = fl_add_input(FL_NORMAL_INPUT,50,80,460,30,idex(_("Name|#N"))); - fl_set_button_shortcut(obj,scex(_("Name|#N")),1); - obj = fl_add_button(FL_RETURN_BUTTON,360,130,100,30,idex(_("Close|#C^[^M"))); - fl_set_button_shortcut(obj,scex(_("Close|#C^[^M")),1); - obj->u_vdata = this; - fl_set_object_callback(obj,C_InsetUrl_CloseUrlCB,0); - radio_html = obj = fl_add_checkbutton(FL_PUSH_BUTTON,50,130,240,30,idex(_("HTML type|#H"))); - fl_set_button_shortcut(obj,scex(_("HTML type|#H")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_end_form(); - fl_set_form_atclose(form, CancelCloseBoxCB, 0); + static int ow = -1, oh; + + 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); } - fl_set_input(url_name, getContents().c_str()); - fl_set_input(name_name, getOptions().c_str()); + 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(radio_html, 0); + fl_set_button(fd_form_url->radio_html, 0); break; case InsetUrl::HTML_URL: - fl_set_button(radio_html, 1); + fl_set_button(fd_form_url->radio_html, 1); break; } - if (form->visible) { - fl_raise_form(form); + if (fd_form_url->form_url->visible) { + fl_raise_form(fd_form_url->form_url); } else { - fl_show_form(form, FL_PLACE_MOUSE, + 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); } } @@ -163,49 +173,47 @@ string InsetUrl::getScreenLabel() const } -int InsetUrl::Latex(FILE *file, signed char fragile) -{ - string latex_output; - int res = Latex(latex_output, fragile); - fprintf(file, "%s", latex_output.c_str()); - - return res; -} - - -int InsetUrl::Latex(string &file, signed char fragile) +int InsetUrl::Latex(ostream & os, + bool fragile, bool /*free_spc*/) const { if (!getOptions().empty()) - file += getOptions() + ' '; + os << getOptions() + ' '; if (fragile) - file += "\\protect"; + os << "\\protect"; + os << "\\url{" << getContents() << '}'; + return 0; +} - file += "\\url{" + getContents() + '}'; +int InsetUrl::Ascii(ostream & os) const +{ + if (getOptions().empty()) + os << "[" << getContents() << "]"; + else + os << "[" << getContents() << "||" << getOptions() << "]"; return 0; } -int InsetUrl::Linuxdoc(string &file) +int InsetUrl::Linuxdoc(ostream & os) const { - file += "<"+ getCmdName() + - " url=\"" + getContents()+"\"" + - " name=\"" + getOptions() +"\">"; + os << "<" << getCmdName() + << " url=\"" << getContents() << "\"" + << " name=\"" << getOptions() << "\">"; return 0; } -int InsetUrl::DocBook(string &file) +int InsetUrl::DocBook(ostream & os) const { - file += "" + - getOptions() +""; - + os << "" + << getOptions() << ""; return 0; } -void InsetUrl::Validate(LaTeXFeatures& features) const +void InsetUrl::Validate(LaTeXFeatures & features) const { features.url = true; }