2 * \file GuiEmbeddedFiles.cpp
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
8 * Full author contact details are available in file CREDITS.
14 #include "GuiEmbeddedFiles.h"
25 /////////////////////////////////////////////////////////////////////
27 // GuiEmbeddedFilesDialog
29 /////////////////////////////////////////////////////////////////////
30 #define INVALID_COLOR "gray"
31 #define AUTO_COLOR "green"
32 #define EMBEDDED_COLOR "black"
33 #define EXTERNAL_COLOR "blue"
35 GuiEmbeddedFilesDialog::GuiEmbeddedFilesDialog(GuiEmbeddedFiles * form)
40 form_->updateEmbeddedFiles();
42 EmbeddedFiles const * files = form_->embeddedFiles();
43 enableCB->setChecked(files->enabled());
44 EmbeddedFiles::EmbeddedFileList::const_iterator it = files->begin();
45 EmbeddedFiles::EmbeddedFileList::const_iterator it_end = files->end();
46 for (; it != it_end; ++it) {
47 QListWidgetItem * item = new QListWidgetItem(toqstr(it->inzipName()));
49 item->setTextColor(INVALID_COLOR);
50 else if(it->status() == EmbeddedFile::AUTO)
51 item->setTextColor(AUTO_COLOR);
52 else if(it->status() == EmbeddedFile::EMBEDDED)
53 item->setTextColor(EMBEDDED_COLOR);
55 item->setTextColor(EXTERNAL_COLOR);
56 filesLW->addItem(item);
58 filesLW->setCurrentRow(0);
60 actionCB->addItem("No action");
61 actionCB->addItem("Add file");
62 actionCB->addItem("Extract file");
63 actionCB->addItem("Extract all");
64 actionCB->addItem("Embed all");
65 actionCB->addItem("Embed layout file");
66 actionCB->addItem("View file");
67 actionCB->addItem("Edit file");
72 void GuiEmbeddedFilesDialog::on_filesLW_itemSelectionChanged()
74 EmbeddedFiles * files = form_->embeddedFiles();
76 QList<QListWidgetItem *> selection = filesLW->selectedItems();
77 fullpathLE->setEnabled(selection.size() == 1);
79 EmbeddedFile::STATUS mode = EmbeddedFile::NONE;
80 // try to find a common mode, otherwise return NONE.
81 for (QList<QListWidgetItem*>::iterator it = selection.begin();
82 it != selection.end(); ++it) {
83 if (selection.size() == 1)
84 fullpathLE->setText(toqstr(files->filename(filesLW->row(*it))));
85 if (mode == EmbeddedFile::NONE) {
86 mode = files->status(filesLW->row(*it));
89 if (mode != files->status(filesLW->row(*it))) {
90 mode = EmbeddedFile::NONE;
95 autoRB->setChecked(mode == EmbeddedFile::AUTO);
96 embeddedRB->setChecked(mode == EmbeddedFile::EMBEDDED);
97 externalRB->setChecked(mode == EmbeddedFile::EXTERNAL);
101 void GuiEmbeddedFilesDialog::on_filesLW_itemDoubleClicked()
103 // FIXME: view or edit file
107 void GuiEmbeddedFilesDialog::update()
109 EmbeddedFiles const * files = form_->embeddedFiles();
111 bool enabled = files->enabled();
112 enableCB->setChecked(enabled);
113 statusGB->setEnabled(enabled);
114 filesLW->setEnabled(enabled);
115 fullpathLE->setEnabled(enabled);
116 actionCB->setEnabled(enabled);
117 actionPB->setEnabled(enabled);
121 void GuiEmbeddedFilesDialog::on_actionPB_clicked()
126 string action = fromqstr(actionCB->currentText());
127 if (action == "Add file") {
128 } else if (action == "Extract file") {
129 } else if (action == "Extract all") {
130 } else if (action == "Embed all") {
131 } else if (action == "Embed layout file") {
132 } else if (action == "View file") {
133 } else if (action == "Edit file") {
139 void GuiEmbeddedFilesDialog::on_actionCB_stateChanged(int idx)
141 // valid action, enable action button
142 actionPB->setEnabled(idx != 0);
146 void GuiEmbeddedFilesDialog::on_enableCB_toggled(bool enable)
150 // When a embedded file is turned to disabled, it should save its
151 // embedded files. Otherwise, embedded files will be lost!!!
153 form_->embeddedFiles()->enable(enable);
155 // immediately post the change to buffer (and bufferView)
157 form_->setMessage("Enable file embedding");
159 form_->setMessage("Disable file embedding");
161 form_->dispatchParams();
165 void GuiEmbeddedFilesDialog::set_embedding_status(EmbeddedFile::STATUS status)
167 EmbeddedFiles * files = form_->embeddedFiles();
168 QList<QListWidgetItem *> selection = filesLW->selectedItems();
169 for (QList<QListWidgetItem*>::iterator it = selection.begin();
170 it != selection.end(); ++it) {
171 files->setStatus(filesLW->row(*it), status);
172 if(status == EmbeddedFile::AUTO)
173 (*it)->setTextColor(AUTO_COLOR);
174 else if(status == EmbeddedFile::EMBEDDED)
175 (*it)->setTextColor(EMBEDDED_COLOR);
177 (*it)->setTextColor(EXTERNAL_COLOR);
179 if (status == EmbeddedFile::AUTO)
180 form_->setMessage("Switch to auto embedding");
181 else if (status == EmbeddedFile::EMBEDDED)
182 form_->setMessage("Switch to always embedding");
184 form_->setMessage("Switch to never embedding");
185 autoRB->setChecked(status == EmbeddedFile::AUTO);
186 embeddedRB->setChecked(status == EmbeddedFile::EMBEDDED);
187 externalRB->setChecked(status == EmbeddedFile::EXTERNAL);
189 form_->dispatchParams();
193 void GuiEmbeddedFilesDialog::on_autoRB_clicked()
195 set_embedding_status(EmbeddedFile::AUTO);
199 void GuiEmbeddedFilesDialog::on_embeddedRB_clicked()
201 set_embedding_status(EmbeddedFile::EMBEDDED);
205 void GuiEmbeddedFilesDialog::on_externalRB_clicked()
207 set_embedding_status(EmbeddedFile::EXTERNAL);
211 } // namespace frontend
214 #include "GuiEmbeddedFiles_moc.cpp"