mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Create new graphics from within LyX choosing a sample file to copy from.
This commit is contained in:
parent
2f5396c871
commit
7b6e26ad91
@ -24,6 +24,7 @@
|
||||
#include "LengthCombo.h"
|
||||
#include "Length.h"
|
||||
#include "LyXRC.h"
|
||||
#include "Format.h"
|
||||
|
||||
#include "graphics/epstools.h"
|
||||
#include "graphics/GraphicsCache.h"
|
||||
@ -42,6 +43,7 @@
|
||||
#include "support/types.h"
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QFileDialog>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QPushButton>
|
||||
@ -248,6 +250,13 @@ GuiGraphics::GuiGraphics(GuiView & lv)
|
||||
void GuiGraphics::change_adaptor()
|
||||
{
|
||||
changed();
|
||||
string const fname = fromqstr(filename->text());
|
||||
FileName dest_fname(FileName(fromqstr(bufferFilePath())), fname);
|
||||
Format const * fmt = theFormats().getFormat(theFormats().getFormatFromFile(dest_fname));
|
||||
LYXERR(Debug::GRAPHICS, "fmt: " << fmt
|
||||
<< ", fmt_name: " << theFormats().getFormatFromFile(dest_fname));
|
||||
editPB->setEnabled(!fname.empty() && !dest_fname.isDirectory() && dest_fname.exists());
|
||||
chooseSamplePB->setEnabled(!fname.empty() && !dest_fname.isDirectory());
|
||||
}
|
||||
|
||||
|
||||
@ -359,6 +368,91 @@ void GuiGraphics::on_browsePB_clicked()
|
||||
}
|
||||
|
||||
|
||||
bool GuiGraphics::checkFileExists()
|
||||
{
|
||||
string const fname = fromqstr(filename->text());
|
||||
FileName dest_fname(FileName(fromqstr(bufferFilePath())), fname);
|
||||
if (fname.empty() || !dest_fname.exists()) {
|
||||
return frontend::Alert::prompt(
|
||||
_("Continue?"), bformat(_("File '%1$s' does not exist. Continue?"), from_utf8(dest_fname.absFileName())),
|
||||
0, 1, _("&Yes"), _("&No")) == 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void GuiGraphics::on_chooseSamplePB_clicked()
|
||||
{
|
||||
string fname = fromqstr(filename->text());
|
||||
FileName dest_fname(FileName(fromqstr(bufferFilePath())), fname);
|
||||
string fmt_name = theFormats().getFormatFromFile(FileName(fname));
|
||||
string filter("Any file (*.*)");
|
||||
if (!fmt_name.empty()) {
|
||||
Format const *fmt = theFormats().getFormat(fmt_name);
|
||||
filter = to_utf8(fmt->prettyname()) + " Files (*." + dest_fname.extension() + ")";
|
||||
}
|
||||
if (fname.empty() || dest_fname.isDirectory()) {
|
||||
frontend::Alert::warning(_("Invalid destination file name!"), _("Invalid destination file name!"));
|
||||
return;
|
||||
}
|
||||
|
||||
QString const samplesDir = toqstr(addPath(package().user_support().absFileName(), "samples"));
|
||||
string sample_name = fromqstr(QFileDialog::getOpenFileName(this, toqstr("Please, select sample template"), samplesDir, toqstr(filter)));
|
||||
if (sample_name.empty())
|
||||
// User pressed Cancel
|
||||
return;
|
||||
FileName sample_fname = FileName(sample_name);
|
||||
|
||||
//FileName sample_fname = libFileSearch(toqstr("samples"), toqstr(sample_name));
|
||||
if (sample_fname.isDirectory() || !sample_fname.exists()) {
|
||||
frontend::Alert::warning(_("Invalid sample file name"), _("Invalid sample file name"));
|
||||
return;
|
||||
}
|
||||
|
||||
string sample_fmt_name = theFormats().getFormatFromFile(sample_fname);
|
||||
if (fmt_name.empty() && !sample_fmt_name.empty()) {
|
||||
fmt_name = sample_fmt_name;
|
||||
string ext = theFormats().getFormat(fmt_name)->extension();
|
||||
if (!ext.empty()) {
|
||||
fname = fname + "." + ext;
|
||||
dest_fname.set(FileName(fromqstr(bufferFilePath())), fname);
|
||||
filename->setText(toqstr(fname));
|
||||
}
|
||||
}
|
||||
|
||||
if (fname.empty() || dest_fname.isDirectory()) {
|
||||
frontend::Alert::warning(_("Invalid destination file name!"), _("Cannot copy sample file on an invalid destination file!"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dest_fname.exists() || (dest_fname.exists() &&
|
||||
frontend::Alert::prompt(
|
||||
_("Overwrite?"), bformat(_("File '%1$s' already exists. Overwrite with sample from template?"), from_utf8(dest_fname.absFileName())),
|
||||
0, 1, _("&Yes"), _("&No")) == 0)) {
|
||||
sample_fname.copyTo(dest_fname);
|
||||
dest_fname.refresh();
|
||||
change_adaptor();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void GuiGraphics::on_editPB_clicked()
|
||||
{
|
||||
string const fname = fromqstr(filename->text());
|
||||
FileName dest_fname(FileName(fromqstr(bufferFilePath())), fname);
|
||||
string fmt_name = theFormats().getFormatFromFile(FileName(fname));
|
||||
if (checkFileExists())
|
||||
theFormats().edit(buffer(), dest_fname, fmt_name);
|
||||
}
|
||||
|
||||
|
||||
void GuiGraphics::on_okPB_clicked()
|
||||
{
|
||||
if (checkFileExists())
|
||||
applyView();
|
||||
}
|
||||
|
||||
|
||||
void GuiGraphics::on_getPB_clicked()
|
||||
{
|
||||
getBB();
|
||||
|
@ -43,6 +43,9 @@ private Q_SLOTS:
|
||||
void on_newGroupPB_clicked();
|
||||
void on_browsePB_clicked();
|
||||
void on_getPB_clicked();
|
||||
void on_editPB_clicked();
|
||||
void on_chooseSamplePB_clicked();
|
||||
void on_okPB_clicked();
|
||||
void on_scaleCB_toggled(bool);
|
||||
void on_WidthCB_toggled(bool);
|
||||
void on_HeightCB_toggled(bool);
|
||||
@ -74,6 +77,8 @@ private:
|
||||
std::string readBoundingBox(std::string const & file);
|
||||
/// test if file exist
|
||||
bool isFileNameValid(std::string const & fname) const;
|
||||
/// Check if file exists, if not, ask whether ok to continue
|
||||
bool checkFileExists();
|
||||
|
||||
/// Control the bb
|
||||
bool bbChanged;
|
||||
|
@ -59,7 +59,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="5" >
|
||||
<item row="2" column="0" colspan="5" >
|
||||
<widget class="QGroupBox" name="sizeGB" >
|
||||
<property name="title" >
|
||||
<string>Output Size</string>
|
||||
@ -181,7 +181,7 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="5" >
|
||||
<item row="3" column="0" colspan="5" >
|
||||
<widget class="QGroupBox" name="rotationGB" >
|
||||
<property name="title" >
|
||||
<string>Rotate Graphics</string>
|
||||
@ -277,6 +277,26 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4" >
|
||||
<widget class="QPushButton" name="editPB" >
|
||||
<property name="text" >
|
||||
<string>&Edit</string>
|
||||
</property>
|
||||
<property name="toolTip" >
|
||||
<string>Edit in external editor (specify an existing filename first)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4" >
|
||||
<widget class="QPushButton" name="chooseSamplePB" >
|
||||
<property name="text" >
|
||||
<string>&New...</string>
|
||||
</property>
|
||||
<property name="toolTip" >
|
||||
<string>Create copying from sample file in <HOME>/.lyx/samples (specify a valid destination filename first)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="Clipping" >
|
||||
|
Loading…
Reference in New Issue
Block a user