]> git.lyx.org Git - lyx.git/blob - src/frontends/qt4/GuiEmbeddedFiles.cpp
Embedding: remove AUTO feature, remove STATUS from embedding dialog
[lyx.git] / src / frontends / qt4 / GuiEmbeddedFiles.cpp
1 /**
2  * \file GuiEmbeddedFiles.cpp
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Bo Peng
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "GuiEmbeddedFiles.h"
14 #include "debug.h"
15
16
17 namespace lyx {
18 namespace frontend {
19
20 static QString const INVALID_COLOR = "gray";
21 static QString const EMBEDDED_COLOR = "black";
22 static QString const EXTERNAL_COLOR = "blue";
23
24
25 GuiEmbeddedFilesDialog::GuiEmbeddedFilesDialog(LyXView & lv)
26         : GuiDialog(lv, "embedding")
27 {
28         setupUi(this);
29         setController(new ControlEmbeddedFiles(*this));
30         setViewTitle(_("Embedded Files"));
31
32         //setView(new DockView<GuiEmbeddedFiles, GuiEmbeddedFilesDialog>(
33         //              *dialog, qef, &gui_view, _("Embedded Files"), Qt::RightDockWidgetArea));
34         
35         bc().setPolicy(ButtonPolicy::OkCancelPolicy);
36
37         updateView();
38 }
39
40
41 ControlEmbeddedFiles & GuiEmbeddedFilesDialog::controller() const
42 {
43         return static_cast<ControlEmbeddedFiles &>(Dialog::controller());
44 }
45
46
47 void GuiEmbeddedFilesDialog::on_filesLW_itemSelectionChanged()
48 {
49         EmbeddedFiles & files = controller().embeddedFiles();
50
51         QList<QListWidgetItem *> selection = filesLW->selectedItems();
52
53         fullpathLE->setEnabled(selection.size() == 1);
54
55         // try to find a common mode, otherwise return NONE.
56         QList<QListWidgetItem*>::iterator it = selection.begin(); 
57         QList<QListWidgetItem*>::iterator it_end = selection.end(); 
58         // if the selection is not empty
59         if (it != it_end) {
60                 int idx = filesLW->row(*it);
61                 fullpathLE->setText(toqstr(files[idx].absFilename()));
62                 // go to the first selected item
63                 controller().goTo(files[idx]);
64         }
65
66         bool mode = false;
67         for (; it != it_end; ++it) {
68                 int idx = filesLW->row(*it);
69                 if (mode) {
70                         mode = true;
71                         continue;
72                 }
73         }
74                         
75 }
76
77
78 void GuiEmbeddedFilesDialog::on_filesLW_itemDoubleClicked()
79 {
80         EmbeddedFiles & files = controller().embeddedFiles();
81         QList<QListWidgetItem *> selection = filesLW->selectedItems();
82         controller().view(files[filesLW->row(*selection.begin())]);
83 }
84
85
86 void GuiEmbeddedFilesDialog::updateView()
87 {
88         filesLW->clear();
89         
90         //
91         EmbeddedFiles const & files = controller().embeddedFiles();
92         EmbeddedFiles::EmbeddedFileList::const_iterator it = files.begin();
93         EmbeddedFiles::EmbeddedFileList::const_iterator it_end = files.end();
94         for (; it != it_end; ++it) {
95                 QListWidgetItem * item = new QListWidgetItem(toqstr(it->inzipName()));
96                 if (!it->valid())
97                         item->setTextColor(INVALID_COLOR);
98                 else if(it->embedded())
99                         item->setTextColor(EMBEDDED_COLOR);
100                 else
101                         item->setTextColor(EXTERNAL_COLOR);
102                 filesLW->addItem(item);
103         }
104         //
105         bool enabled = files.enabled();
106         enableCB->setChecked(enabled);
107         fullpathLE->setEnabled(enabled);
108 }
109
110
111 void GuiEmbeddedFilesDialog::on_addPB_clicked()
112 {
113         docstring const file = controller().browseFile();
114         if (!file.empty()) {
115                 EmbeddedFiles & files = controller().embeddedFiles();
116                 files.registerFile(to_utf8(file), true);
117         }               
118 }
119
120
121 void GuiEmbeddedFilesDialog::on_extractPB_clicked()
122 {
123         EmbeddedFiles const & files = controller().embeddedFiles();
124         QList<QListWidgetItem *> selection = filesLW->selectedItems();
125         for (QList<QListWidgetItem*>::iterator it = selection.begin(); 
126                 it != selection.end(); ++it)
127                 controller().extract(files[filesLW->row(*it)]);
128 }
129
130
131 void GuiEmbeddedFilesDialog::on_enableCB_toggled(bool enable)
132 {
133         // FIXME:
134         //
135         // When a embedded file is turned to disabled, it should save its
136         // embedded files. Otherwise, embedded files will be lost!!!
137         //
138         controller().embeddedFiles().enable(enable);
139         // immediately post the change to buffer (and bufferView)
140         if (enable)
141                 controller().setMessage("Enable file embedding");
142         else
143                 controller().setMessage("Disable file embedding");
144         // update bufferView
145         controller().dispatchParams();
146 }
147
148
149 void GuiEmbeddedFilesDialog::set_embedding_status(bool embed)
150 {
151         EmbeddedFiles & files = controller().embeddedFiles();
152         QList<QListWidgetItem *> selection = filesLW->selectedItems();
153         for (QList<QListWidgetItem*>::iterator it = selection.begin(); 
154                 it != selection.end(); ++it) {
155                 int row = filesLW->row(*it);
156                 // FIXME: mark buffer dirty
157                 if(embed)
158                         (*it)->setTextColor(EMBEDDED_COLOR);
159                 else
160                         (*it)->setTextColor(EXTERNAL_COLOR);
161         }
162         if (embed)
163                 controller().setMessage("Embed file");
164         else
165                 controller().setMessage("Extract file");
166         // update bufferView
167         controller().dispatchParams();
168 }
169
170
171 } // namespace frontend
172 } // namespace lyx
173
174 #include "GuiEmbeddedFiles_moc.cpp"