9 #include FORMS_H_LOCATION
12 #include "commandtags.h"
14 #include "LaTeXFeatures.h"
15 #include "lyx_gui_misc.h" // CancelCloseBoxCB
19 InsetUrl::InsetUrl(string const & cmd)
23 if (getCmdName() == "url")
26 flag = InsetUrl::HTML_URL;
30 InsetUrl::InsetUrl(InsetCommand const & inscmd)
33 setCmdName(inscmd.getCmdName());
34 setContents(inscmd.getContents());
35 setOptions(inscmd.getOptions());
36 if (getCmdName() == "url")
39 flag = InsetUrl::HTML_URL;
43 InsetUrl::InsetUrl(string const & ins_name, string const & ins_cont,
44 string const & ins_opt)
48 setContents(ins_cont);
50 if (ins_name == "url")
53 flag = InsetUrl::HTML_URL;
60 fl_hide_form(fd_form_url->form_url);
61 fl_free_form(fd_form_url->form_url);
67 void InsetUrl::CloseUrlCB(FL_OBJECT * ob, long)
69 Holder * holder = static_cast<Holder*>(ob->u_vdata);
71 InsetUrl * inset = holder->inset;
72 BufferView * bv = holder->view;
74 string url = fl_get_input(inset->fd_form_url->url_name);
75 string name = fl_get_input(inset->fd_form_url->name_name);
77 if (fl_get_button(inset->fd_form_url->radio_html))
82 Buffer * buffer = bv->buffer();
84 if ((url != inset->getContents() ||
85 name != inset->getOptions() ||
86 cmdname != inset->getCmdName())
87 && !(buffer->isReadonly()) ) {
89 inset->setContents(url);
90 inset->setOptions(name);
91 inset->setCmdName(cmdname);
93 inset->flag = InsetUrl::URL;
95 inset->flag = InsetUrl::HTML_URL;
96 bv->updateInset(inset, true);
99 if (inset->fd_form_url) {
100 fl_hide_form(inset->fd_form_url->form_url);
101 fl_free_form(inset->fd_form_url->form_url);
102 inset->fd_form_url = 0;
107 extern "C" void C_InsetUrl_CloseUrlCB(FL_OBJECT * ob, long data)
109 InsetUrl::CloseUrlCB(ob, data);
113 char const * InsetUrl::EditMessage() const
115 return _("Opened Url");
119 void InsetUrl::Edit(BufferView * bv, int, int, unsigned int)
121 static int ow = -1, oh;
123 if(bv->buffer()->isReadonly())
124 WarnReadonly(bv->buffer()->fileName());
127 fd_form_url = create_form_form_url();
129 fd_form_url->button_close->u_vdata = &holder;
130 fl_set_form_atclose(fd_form_url->form_url,
131 CancelCloseBoxCB, 0);
134 fl_set_input(fd_form_url->url_name, getContents().c_str());
135 fl_set_input(fd_form_url->name_name, getOptions().c_str());
138 fl_set_button(fd_form_url->radio_html, 0);
140 case InsetUrl::HTML_URL:
141 fl_set_button(fd_form_url->radio_html, 1);
145 if (fd_form_url->form_url->visible) {
146 fl_raise_form(fd_form_url->form_url);
148 fl_show_form(fd_form_url->form_url,
149 FL_PLACE_MOUSE | FL_FREE_SIZE,
150 FL_FULLBORDER, _("Insert Url"));
152 ow = fd_form_url->form_url->w;
153 oh = fd_form_url->form_url->h;
155 fl_set_form_minsize(fd_form_url->form_url, ow, oh);
160 string InsetUrl::getScreenLabel() const
163 if (flag == InsetUrl::HTML_URL)
164 temp += _("HtmlUrl: ");
167 temp += getContents();
168 if(!getOptions().empty()) {
170 temp += getOptions();
176 int InsetUrl::Latex(ostream & os,
177 bool fragile, bool /*free_spc*/) const
179 if (!getOptions().empty())
180 os << getOptions() + ' ';
183 os << "\\url{" << getContents() << '}';
188 int InsetUrl::Ascii(ostream & os) const
190 if (getOptions().empty())
191 os << "[" << getContents() << "]";
193 os << "[" << getContents() << "||" << getOptions() << "]";
198 int InsetUrl::Linuxdoc(ostream & os) const
200 os << "<" << getCmdName()
201 << " url=\"" << getContents() << "\""
202 << " name=\"" << getOptions() << "\">";
208 int InsetUrl::DocBook(ostream & os) const
210 os << "<ulink url=\"" << getContents() << "\">"
211 << getOptions() << "</ulink>";
216 void InsetUrl::Validate(LaTeXFeatures & features) const