]> git.lyx.org Git - lyx.git/blobdiff - src/LyXSendto.C
Fixed inset-text border redraw problem and hopefully recalc boostup.
[lyx.git] / src / LyXSendto.C
index 4c987c636631fe1236e78baeaf6741def835e555..881ad276eb148cc2b4a2f4fe37e04e4937652702 100644 (file)
@@ -6,37 +6,47 @@
 #include "lyxrc.h"
 #include "LString.h"
 #include "support/filetools.h"
-#include "pathstack.h"
+#include "support/path.h"
 #include "buffer.h"
 #include "lyx_gui_misc.h"
 #include "support/syscall.h"
 #include "gettext.h"
-#include "lyx_cb.h"
+#include "bufferview_funcs.h"
+#include "exporter.h"
 
-extern FD_form_sendto *fd_form_sendto;
-extern BufferView *current_view;
-extern int MakeDVIOutput(Buffer *buffer);
-extern bool MenuRunDvips(Buffer *buffer, bool wait);
+extern FD_form_sendto * fd_form_sendto;
+extern BufferView * current_view;
+extern int MakeLaTeXOutput(Buffer * buffer);
+extern bool CreatePostscript(Buffer * buffer, bool wait);
 
 // Whereas this feature is under the menu item File->Export->Custom,
 // I kept the old name sendto in the code because I am lazy (JMarc)
 
 void MenuSendto()
 {
+    static int ow = -1;
+    static int oh;
+
     // do this only if the command is empty
     if (!fl_get_input(fd_form_sendto->input_cmd) &&
-        !lyxrc->custom_export_command.empty())
+        !lyxrc.custom_export_command.empty())
         fl_set_input(fd_form_sendto->input_cmd,
-                     lyxrc->custom_export_command.c_str());
+                     lyxrc.custom_export_command.c_str());
     if (fd_form_sendto->form_sendto->visible) {
         fl_raise_form(fd_form_sendto->form_sendto);
     } else {  
         fl_show_form(fd_form_sendto->form_sendto,
-                     FL_PLACE_MOUSE | FL_FREE_SIZE, FL_FULLBORDER,
+                    FL_PLACE_MOUSE | FL_FREE_SIZE, FL_TRANSIENT,
                      _("Send Document to Command"));
+       if (ow < 0) {
+               ow = fd_form_sendto->form_sendto->w;
+               oh = fd_form_sendto->form_sendto->h;
+       }
+       fl_set_form_minsize(fd_form_sendto->form_sendto, ow, oh);
     }
 }
 
+
 void SendtoApplyCB(FL_OBJECT *, long)
 {
     if (!current_view->available())
@@ -45,17 +55,7 @@ void SendtoApplyCB(FL_OBJECT *, long)
     string command = fl_get_input(fd_form_sendto->input_cmd);
     if (command.empty())
         return;
-    Buffer *buffer = current_view->currentBuffer();
-    if (fl_get_button(fd_form_sendto->radio_ftype_dvi) ||
-        fl_get_button(fd_form_sendto->radio_ftype_ps)) {
-        ProhibitInput();
-        // Generate dvi file and check if there are errors in the .lyx file
-        if (MakeDVIOutput(buffer) > 0) {
-            AllowInput();
-            return;
-        }
-        AllowInput();
-    }
+    Buffer * buffer = current_view->buffer();
     string ftypeext;
     if (fl_get_button(fd_form_sendto->radio_ftype_lyx))
         ftypeext = ".lyx";
@@ -66,44 +66,45 @@ void SendtoApplyCB(FL_OBJECT *, long)
     else if (fl_get_button(fd_form_sendto->radio_ftype_ascii))
         ftypeext = ".txt";
     else {
-        ftypeext = ".ps_tmp";
-        if (!MenuRunDvips(buffer, true)) {
-           return;
-       }
+       ftypeext = ".ps";
+       if (!Exporter::Export(buffer, "ps", true))
+               return;
     }
-    string fname = SpaceLess(ChangeExtension(buffer->getFileName(), 
-                                             ftypeext, true));
+
+    string const fname = OnlyFilename(ChangeExtension(buffer->getLatexName(),
+                                                     ftypeext));
     if (!contains(command, "$$FName"))
         command = "( " + command + " ) <$$FName";
-    subst(command, "$$FName",fname);
+    command = subst(command, "$$FName", fname);
     command += " &"; // execute in background
     // push directorypath, if necessary 
-    string path = OnlyPath(buffer->getFileName());
-    if (lyxrc->use_tempdir || (IsDirWriteable(path) < 1)){
+    string path = OnlyPath(buffer->fileName());
+    if (lyxrc.use_tempdir || (IsDirWriteable(path) < 1)){
         path = buffer->tmppath;
     }
-    PathPush(path);
+    Path p(path);
     // save the .lyx file in tmp_dir if this filetype is requested
     if (fl_get_button(fd_form_sendto->radio_ftype_lyx))
-        buffer->writeFile(fname,true);
+        buffer->writeFile(fname, true);
     // if the .tex file is requested save it to the tempdir
-    // as now we don't do the MakeDVIOutput anymore
+    // as now we don't do the MakeLaTeXOutput anymore
     if (fl_get_button(fd_form_sendto->radio_ftype_latex))
-        buffer->makeLaTeXFile(fname,path,false);
+        buffer->makeLaTeXFile(fname, path, false);
     // create the .txt file in tmp_dir if this filetype is requested
     if (fl_get_button(fd_form_sendto->radio_ftype_ascii))
-        buffer->writeFileAscii(fname, lyxrc->ascii_linelen);
+        buffer->writeFileAscii(fname, lyxrc.ascii_linelen);
     Systemcalls one(Systemcalls::System, command);    
-    PathPop();
 }
 
+
 void SendtoCancelCB(FL_OBJECT *, long)
 {
     fl_hide_form(fd_form_sendto->form_sendto);
 }
 
-void SendtoOKCB(FL_OBJECT *ob, long data)
+
+void SendtoOKCB(FL_OBJECT * ob, long data)
 {
-    SendtoCancelCB(ob,data);
-    SendtoApplyCB(ob,data);
+    SendtoCancelCB(ob, data);
+    SendtoApplyCB(ob, data);
 }