home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lyx-0.13.2.tar.gz / lyx-0.13.2.tar / lyx-0.13.2 / src / LyXSendto.C < prev    next >
C/C++ Source or Header  |  1998-04-23  |  3KB  |  110 lines

  1. #include <config.h>
  2.  
  3. #include FORMS_H_LOCATION
  4. #include "print_form.h"
  5. #include "lyx_main.h"
  6. #include "lyxrc.h"
  7. #include "LString.h"
  8. #include "filetools.h"
  9. #include "path.h"
  10. #include "buffer.h"
  11. #include "lyx_gui_misc.h"
  12. #include "syscall.h"
  13. #include "gettext.h"
  14. #include "lyx_cb.h"
  15.  
  16. //     $Id: LyXSendto.C,v 1.1.1.1 1998/04/23 16:02:47 larsbj Exp $    
  17.  
  18. #if !defined(lint) && !defined(WITH_WARNINGS)
  19. static char vcid[] = "$Id: LyXSendto.C,v 1.1.1.1 1998/04/23 16:02:47 larsbj Exp $";
  20. #endif /* lint */
  21.  
  22. /* Prototypes */
  23. extern FD_form_sendto *fd_form_sendto;
  24. extern BufferView *current_view;
  25. extern int MakeDVIOutput(Buffer *buffer);
  26. extern bool MenuRunDvips(Buffer *buffer, bool wait);
  27.  
  28. // Whereas this feature is under the menu item File->Export->Custom,
  29. // I kept the old name sendto in the code because I am lazy (JMarc)
  30.  
  31. void MenuSendto()
  32. {
  33.     // do this only if the command is empty
  34.     if (!fl_get_input(fd_form_sendto->input_cmd) &&
  35.         !lyxrc->custom_export_command.empty())
  36.         fl_set_input(fd_form_sendto->input_cmd,
  37.                      lyxrc->custom_export_command.c_str());
  38.     if (fd_form_sendto->form_sendto->visible) {
  39.         fl_raise_form(fd_form_sendto->form_sendto);
  40.     } else {  
  41.         fl_show_form(fd_form_sendto->form_sendto,
  42.                      FL_PLACE_MOUSE | FL_FREE_SIZE, FL_FULLBORDER,
  43.                      _("Send Document to Command"));
  44.     }
  45. }
  46.  
  47. void SendtoApplyCB(FL_OBJECT *, long)
  48. {
  49.     if (!current_view->available())
  50.         return;
  51.  
  52.     LString command = fl_get_input(fd_form_sendto->input_cmd);
  53.     if (command.empty())
  54.         return;
  55.     ProhibitInput();
  56.     // Generate dvi file and check if there are errors in the .lyx file
  57.     Buffer *buffer = current_view->currentBuffer();
  58.     if (MakeDVIOutput(buffer) > 0) {
  59.     AllowInput();
  60.         return;
  61.     }
  62.     AllowInput();
  63.     LString ftypeext;
  64.     if (fl_get_button(fd_form_sendto->radio_ftype_lyx))
  65.         ftypeext = ".lyx";
  66.     else if (fl_get_button(fd_form_sendto->radio_ftype_latex))
  67.         ftypeext = ".tex";
  68.     else if (fl_get_button(fd_form_sendto->radio_ftype_dvi))
  69.         ftypeext = ".dvi";
  70.     else if (fl_get_button(fd_form_sendto->radio_ftype_ascii))
  71.         ftypeext = ".txt";
  72.     else {
  73.         ftypeext = ".ps_tmp";
  74.         if (!MenuRunDvips(buffer, true)) {
  75.         return;
  76.     }
  77.     }
  78.     LString fname = ChangeExtension(buffer->getFileName(), ftypeext, true);
  79.     if (!command.contains("$$FName"))
  80.         command = "cat $$FName | " + command;
  81.     command.subst("$$FName",fname);
  82.     command += " &"; // execute in background
  83.     // push directorypath, if necessary 
  84.     LString path = OnlyPath(buffer->getFileName());
  85.     if (lyxrc->use_tempdir || (IsDirWriteable(path) < 1)){
  86.         path = buffer->tmppath;
  87.     }
  88.     //PathPush(path);
  89.     Path p(path);
  90.     // save the .lyx file in tmp_dir if this filetype is requested
  91.     if (fl_get_button(fd_form_sendto->radio_ftype_lyx))
  92.         buffer->writeFile(fname,true);
  93.     // create the .txt file in tmp_dir if this filetype is requested
  94.     if (fl_get_button(fd_form_sendto->radio_ftype_ascii))
  95.         buffer->writeFileAscii(fname, lyxrc->ascii_linelen);
  96.     Systemcalls one(Systemcalls::System, command);    
  97.     //PathPop();
  98. }
  99.  
  100. void SendtoCancelCB(FL_OBJECT *, long)
  101. {
  102.     fl_hide_form(fd_form_sendto->form_sendto);
  103. }
  104.  
  105. void SendtoOKCB(FL_OBJECT *ob, long data)
  106. {
  107.     SendtoCancelCB(ob,data);
  108.     SendtoApplyCB(ob,data);
  109. }
  110.