#include "Buffer.h"
#include "BufferParams.h"
-#include "Converter.h"
#include "Format.h"
#include "FuncRequest.h"
-#include "LyXRC.h"
-#include "support/qstring_helpers.h"
#include "support/filetools.h"
+#include "support/gettext.h"
+#include "support/qstring_helpers.h"
+
+#include <algorithm>
#include <QLineEdit>
#include <QListWidget>
GuiSendTo::GuiSendTo(GuiView & lv)
- : GuiDialog(lv, "sendto", qt_("Send Document to Command"))
+ : GuiDialog(lv, "sendto", qt_("Export or Send Document"))
{
setupUi(this);
this, SLOT(changed_adaptor()));
connect(formatLW, SIGNAL(itemSelectionChanged()),
this, SLOT(changed_adaptor()));
- connect(commandCO, SIGNAL(textChanged(QString)),
+ connect(commandCO, SIGNAL(editTextChanged(QString)),
this, SLOT(changed_adaptor()));
bc().setPolicy(ButtonPolicy::OkApplyCancelPolicy);
}
+namespace {
+bool formatSorter(Format const * lhs, Format const * rhs) {
+ return _(lhs->prettyname()) < _(rhs->prettyname());
+}
+} // end namespace
+
+
void GuiSendTo::updateContents()
{
- all_formats_ = allFormats();
+ all_formats_ = buffer().params().exportableFormats(false);
+
+ sort(all_formats_.begin(), all_formats_.end(), formatSorter);
// Save the current selection if any
Format const * current_format = 0;
return false;
return (formatLW->selectedItems().size() > 0
- && formatLW->count() != 0
- && !commandCO->currentText().isEmpty());
+ && formatLW->count() != 0);
}
void GuiSendTo::dispatchParams()
{
- if (command_.isEmpty() || !format_ || format_->name().empty())
+ if (!format_ || format_->name().empty())
return;
- string const data = format_->name() + " " + fromqstr(command_);
- dispatch(FuncRequest(getLfun(), data));
-}
-
-// FIXME: Move to Converters?
-vector<Format const *> GuiSendTo::allFormats() const
-{
- // What formats can we output natively?
- vector<string> exports;
- exports.push_back("lyx");
- exports.push_back("text");
-
- if (buffer().isLatex()) {
- if (buffer().params().useXetex)
- exports.push_back("xetex");
- else {
- exports.push_back("latex");
- exports.push_back("pdflatex");
- }
- }
- else if (buffer().isDocBook())
- exports.push_back("docbook");
- else if (buffer().isLiterate())
- exports.push_back("literate");
-
- // Loop over these native formats and ascertain what formats we
- // can convert to
- vector<Format const *> to;
-
- vector<string>::const_iterator ex_it = exports.begin();
- vector<string>::const_iterator ex_end = exports.end();
- for (; ex_it != ex_end; ++ex_it) {
- // Start off with the native export format.
- // "formats" is LyX's list of recognised formats
- to.push_back(formats.getFormat(*ex_it));
-
- Formats::const_iterator fo_it = formats.begin();
- Formats::const_iterator fo_end = formats.end();
- for (; fo_it != fo_end; ++fo_it) {
- // we need to hide the default graphic export formats
- // from the external menu, because we need them only
- // for the internal lyx-view and external latex run
- string const name = fo_it->name();
- if (name != "eps" && name != "xpm" && name != "png" &&
- theConverters().isReachable(*ex_it, name))
- to.push_back(&(*fo_it));
- }
- }
+ string data = format_->name();
+ if (!command_.isEmpty())
+ data += " " + fromqstr(command_);
- // Remove repeated formats.
- sort(to.begin(), to.end());
- to.erase(unique(to.begin(), to.end()), to.end());
+ FuncCode const lfun = command_.isEmpty() ?
+ LFUN_BUFFER_EXPORT : getLfun();
- return to;
+ dispatch(FuncRequest(lfun, data));
}
-
Dialog * createGuiSendTo(GuiView & lv) { return new GuiSendTo(lv); }