2001-08-19 13:25:15 +00:00
|
|
|
/**
|
|
|
|
* \file QURL.C
|
|
|
|
* Copyright 2001 the LyX Team
|
|
|
|
* Read the file COPYING
|
|
|
|
*
|
|
|
|
* \author John Levon
|
2001-03-23 06:31:30 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
#include "QURLDialog.h"
|
|
|
|
#include "QtLyXView.h"
|
|
|
|
#include "BufferView.h"
|
2001-03-23 06:31:30 +00:00
|
|
|
|
|
|
|
#include "Dialogs.h"
|
2001-08-19 13:25:15 +00:00
|
|
|
#include "QURL.h"
|
2001-03-23 06:31:30 +00:00
|
|
|
#include "gettext.h"
|
|
|
|
#include "buffer.h"
|
|
|
|
#include "lyxfunc.h"
|
|
|
|
|
|
|
|
#include <qlineedit.h>
|
|
|
|
#include <qcheckbox.h>
|
|
|
|
#include <qpushbutton.h>
|
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
QURL::QURL(LyXView *v, Dialogs *d)
|
2001-03-23 06:31:30 +00:00
|
|
|
: dialog_(0), lv_(v), d_(d), inset_(0), h_(0), u_(0), ih_(0)
|
|
|
|
{
|
|
|
|
// let the dialog be shown
|
|
|
|
// This is a permanent connection so we won't bother
|
|
|
|
// storing a copy because we won't be disconnecting.
|
2001-08-19 13:25:15 +00:00
|
|
|
d->showUrl.connect(slot(this, &QURL::showUrl));
|
|
|
|
d->createUrl.connect(slot(this, &QURL::createUrl));
|
2001-03-23 06:31:30 +00:00
|
|
|
}
|
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
|
|
|
|
QURL::~QURL()
|
2001-03-23 06:31:30 +00:00
|
|
|
{
|
|
|
|
delete dialog_;
|
|
|
|
}
|
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
|
|
|
|
void QURL::showUrl(InsetCommand * const inset)
|
2001-03-23 06:31:30 +00:00
|
|
|
{
|
|
|
|
// FIXME: when could inset be 0 here ?
|
|
|
|
if (inset==0)
|
|
|
|
return;
|
|
|
|
|
|
|
|
inset_ = inset;
|
|
|
|
readonly = lv_->buffer()->isReadonly();
|
2001-08-19 13:25:15 +00:00
|
|
|
//ih_ = inset_->hide.connect(slot(this,&QURL::hide));
|
2001-03-23 06:31:30 +00:00
|
|
|
params = inset->params();
|
|
|
|
|
|
|
|
show();
|
|
|
|
}
|
2001-08-19 13:25:15 +00:00
|
|
|
|
2001-03-23 06:31:30 +00:00
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
void QURL::createUrl(string const & arg)
|
2001-03-23 06:31:30 +00:00
|
|
|
{
|
|
|
|
// we could already be showing a URL, clear it out
|
|
|
|
if (inset_)
|
|
|
|
close();
|
|
|
|
|
|
|
|
readonly = lv_->buffer()->isReadonly();
|
|
|
|
params.setFromString(arg);
|
|
|
|
show();
|
|
|
|
}
|
2001-08-19 13:25:15 +00:00
|
|
|
|
2001-03-23 06:31:30 +00:00
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
void QURL::update()
|
2001-03-23 06:31:30 +00:00
|
|
|
{
|
|
|
|
dialog_->urlED->setText(params.getContents().c_str());
|
|
|
|
dialog_->nameED->setText(params.getOptions().c_str());
|
|
|
|
|
|
|
|
if (params.getCmdName()=="url")
|
|
|
|
dialog_->hyperlinkCB->setChecked(false);
|
|
|
|
else
|
|
|
|
dialog_->hyperlinkCB->setChecked(true);
|
|
|
|
|
|
|
|
if (readonly) {
|
|
|
|
dialog_->nameED->setFocusPolicy(QWidget::NoFocus);
|
|
|
|
dialog_->urlED->setFocusPolicy(QWidget::NoFocus);
|
|
|
|
dialog_->okPB->setEnabled(false);
|
|
|
|
dialog_->cancelPB->setText(_("Close"));
|
|
|
|
dialog_->hyperlinkCB->setEnabled(false);
|
|
|
|
} else {
|
|
|
|
dialog_->nameED->setFocusPolicy(QWidget::StrongFocus);
|
|
|
|
dialog_->urlED->setFocusPolicy(QWidget::StrongFocus);
|
|
|
|
dialog_->urlED->setFocus();
|
|
|
|
dialog_->okPB->setEnabled(true);
|
|
|
|
dialog_->cancelPB->setText(_("Cancel"));
|
|
|
|
dialog_->hyperlinkCB->setEnabled(true);
|
|
|
|
}
|
|
|
|
}
|
2001-08-19 13:25:15 +00:00
|
|
|
|
2001-03-23 06:31:30 +00:00
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
void QURL::apply()
|
2001-03-23 06:31:30 +00:00
|
|
|
{
|
|
|
|
if (readonly)
|
|
|
|
return;
|
|
|
|
|
|
|
|
params.setContents(dialog_->urlED->text().latin1());
|
|
|
|
params.setOptions(dialog_->nameED->text().latin1());
|
|
|
|
|
|
|
|
if (dialog_->hyperlinkCB->isChecked())
|
|
|
|
params.setCmdName("htmlurl");
|
|
|
|
else
|
|
|
|
params.setCmdName("url");
|
|
|
|
|
|
|
|
if (inset_ != 0) {
|
|
|
|
if (params != inset_->params()) {
|
|
|
|
inset_->setParams(params);
|
|
|
|
lv_->view()->updateInset(inset_, true);
|
|
|
|
}
|
|
|
|
} else
|
2001-08-19 13:25:15 +00:00
|
|
|
lv_->getLyXFunc()->dispatch(LFUN_INSERT_URL, params.getAsString().c_str());
|
2001-03-23 06:31:30 +00:00
|
|
|
}
|
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
|
|
|
|
void QURL::show()
|
2001-03-23 06:31:30 +00:00
|
|
|
{
|
|
|
|
if (!dialog_)
|
2001-08-19 13:25:15 +00:00
|
|
|
dialog_ = new QURLDialog(this, 0, _("LyX: Url"), false);
|
2001-03-23 06:31:30 +00:00
|
|
|
|
|
|
|
if (!dialog_->isVisible()) {
|
2001-08-19 13:25:15 +00:00
|
|
|
h_ = d_->hideBufferDependent.connect(slot(this, &QURL::hide));
|
|
|
|
//u_ = d_->updateBufferDependent.connect(slot(this, &QURL::update));
|
2001-03-23 06:31:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
dialog_->raise();
|
|
|
|
dialog_->setActiveWindow();
|
|
|
|
|
|
|
|
update();
|
|
|
|
dialog_->show();
|
|
|
|
}
|
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
|
|
|
|
void QURL::close()
|
2001-03-23 06:31:30 +00:00
|
|
|
{
|
|
|
|
h_.disconnect();
|
|
|
|
u_.disconnect();
|
|
|
|
ih_.disconnect();
|
|
|
|
inset_ = 0;
|
|
|
|
}
|
2001-08-19 13:25:15 +00:00
|
|
|
|
2001-03-23 06:31:30 +00:00
|
|
|
|
2001-08-19 13:25:15 +00:00
|
|
|
void QURL::hide()
|
2001-03-23 06:31:30 +00:00
|
|
|
{
|
|
|
|
dialog_->hide();
|
|
|
|
close();
|
|
|
|
}
|