}
-void EmbeddedFiles::registerFile(string const & filename,
+EmbeddedFile & EmbeddedFiles::registerFile(string const & filename,
bool embed, Inset const * inset, string const & inzipName)
{
// filename can be relative or absolute, translate to absolute filename
if (it != file_list_.end()) {
it->addInset(inset);
it->validate();
- return;
+ return *it;
}
// try to be more careful
file_list_.push_back(EmbeddedFile(abs_filename,
getInzipName(abs_filename, inzipName), embed, inset));
+ return file_list_.back();
}
* \param inset Inset pointer
* \param inzipName suggested inzipname
*/
- void registerFile(std::string const & filename, bool embed = false,
+ EmbeddedFile & registerFile(std::string const & filename, bool embed = false,
Inset const * inset = 0,
std::string const & inzipName = std::string());
}
-docstring const ControlEmbeddedFiles::browseFile()
+bool ControlEmbeddedFiles::browseAndAddFile()
{
std::pair<docstring, docstring> dir1(_("Documents|#o#O"),
from_utf8(lyxrc.document_path));
FileFilterList const filter(_("All file (*.*)"));
- return browseRelFile(docstring(), from_utf8(bufferFilepath()),
+ docstring const file = browseRelFile(docstring(), from_utf8(bufferFilepath()),
_("Select a file to embed"),
filter, false, dir1);
+ if (!file.empty()) {
+ EmbeddedFile & ef = embeddedFiles().registerFile(to_utf8(file), true);
+ if (embeddedFiles().enabled())
+ ef.updateFromExternalFile(&buffer());
+ buffer().markDirty();
+ dispatchMessage("Add an embedded file" + to_utf8(file));
+ return true;
+ }
+ return false;
}
///
void setEmbed(EmbeddedFile & item, bool embed, bool update);
///
- docstring const browseFile();
+ bool browseAndAddFile();
///
bool extract(EmbeddedFile const & item);
///
QString label = toqstr(files[idx].inzipName())
+ QString(" (%1/%2)").arg(k + 1).arg(files[idx].refCount());
item->setText(label);
- } else
+ } else if (files[idx].refCount() == 1)
controller_.goTo(files[idx], 0);
}
void GuiEmbeddedFilesDialog::on_addPB_clicked()
{
- docstring const file = controller_.browseFile();
- if (!file.empty()) {
- EmbeddedFiles & files = controller_.embeddedFiles();
- files.registerFile(to_utf8(file), true);
- }
- controller_.dispatchMessage("Add an embedded file");
+ if (controller_.browseAndAddFile())
+ updateView();
}