]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiSendto.cpp
Fix the tab ordering of GuiDocument components.
[lyx.git] / src / frontends / qt4 / GuiSendto.cpp
index 8aece21b81d995d6b3249ee862465a024b80be39..8bb8242a5b91aace0f9cb8e1cabde9a6afad718a 100644 (file)
 
 #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>
@@ -36,7 +37,7 @@ namespace frontend {
 
 
 GuiSendTo::GuiSendTo(GuiView & lv)
-       : GuiDialog(lv, "sendto", qt_("Send Document to Command"))
+       : GuiDialog(lv, "sendto", qt_("Export or Send Document"))
 {
        setupUi(this);
 
@@ -52,7 +53,7 @@ GuiSendTo::GuiSendTo(GuiView & lv)
                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);
@@ -68,9 +69,18 @@ void GuiSendTo::changed_adaptor()
 }
 
 
+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;
@@ -134,8 +144,7 @@ bool GuiSendTo::isValid()
                return false;
 
        return (formatLW->selectedItems().size() > 0
-               && formatLW->count() != 0
-               && !commandCO->currentText().isEmpty());
+               && formatLW->count() != 0);
 }
 
 
@@ -158,66 +167,19 @@ void GuiSendTo::paramsToDialog(Format const * /*format*/, QString const & comman
 
 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); }