3 #include FORMS_H_LOCATION
4 #include "print_form.h"
11 #include "lyx_gui_misc.h"
16 // $Id: LyXSendto.C,v 1.1 1999/09/27 18:44:36 larsbj Exp $
18 #if !defined(lint) && !defined(WITH_WARNINGS)
19 static char vcid[] = "$Id: LyXSendto.C,v 1.1 1999/09/27 18:44:36 larsbj Exp $";
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);
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)
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);
41 fl_show_form(fd_form_sendto->form_sendto,
42 FL_PLACE_MOUSE | FL_FREE_SIZE, FL_FULLBORDER,
43 _("Send Document to Command"));
47 void SendtoApplyCB(FL_OBJECT *, long)
49 if (!current_view->available())
52 LString command = fl_get_input(fd_form_sendto->input_cmd);
55 Buffer *buffer = current_view->currentBuffer();
56 if (fl_get_button(fd_form_sendto->radio_ftype_dvi) ||
57 fl_get_button(fd_form_sendto->radio_ftype_ps)) {
59 // Generate dvi file and check if there are errors in the .lyx file
60 if (MakeDVIOutput(buffer) > 0) {
67 if (fl_get_button(fd_form_sendto->radio_ftype_lyx))
69 else if (fl_get_button(fd_form_sendto->radio_ftype_latex))
71 else if (fl_get_button(fd_form_sendto->radio_ftype_dvi))
73 else if (fl_get_button(fd_form_sendto->radio_ftype_ascii))
77 if (!MenuRunDvips(buffer, true)) {
81 LString fname = SpaceLess(ChangeExtension(buffer->getFileName(),
83 if (!command.contains("$$FName"))
84 command = "( " + command + " ) <$$FName";
85 command.subst("$$FName",fname);
86 command += " &"; // execute in background
87 // push directorypath, if necessary
88 LString path = OnlyPath(buffer->getFileName());
89 if (lyxrc->use_tempdir || (IsDirWriteable(path) < 1)){
90 path = buffer->tmppath;
93 // save the .lyx file in tmp_dir if this filetype is requested
94 if (fl_get_button(fd_form_sendto->radio_ftype_lyx))
95 buffer->writeFile(fname,true);
96 // if the .tex file is requested save it to the tempdir
97 // as now we don't do the MakeDVIOutput anymore
98 if (fl_get_button(fd_form_sendto->radio_ftype_latex))
99 buffer->makeLaTeXFile(fname,path,false);
100 // create the .txt file in tmp_dir if this filetype is requested
101 if (fl_get_button(fd_form_sendto->radio_ftype_ascii))
102 buffer->writeFileAscii(fname, lyxrc->ascii_linelen);
103 Systemcalls one(Systemcalls::System, command);
107 void SendtoCancelCB(FL_OBJECT *, long)
109 fl_hide_form(fd_form_sendto->form_sendto);
112 void SendtoOKCB(FL_OBJECT *ob, long data)
114 SendtoCancelCB(ob,data);
115 SendtoApplyCB(ob,data);