#include <config.h>
#include <stdlib.h>
#include FORMS_H_LOCATION
#include "error.h"
#include "lyx_sendfax.h"
#include "lyx_main.h"
#include "lyxrc.h"
#include "filetools.h"
#include "lyx_gui_misc.h" // CancelCloseBoxCB
#include "syscall.h"
#include "gettext.h"
// $Id: lyx_sendfax_main.C,v 1.1.1.1 1998/04/20 21:14:51 larsbj Exp $
#if !defined (lint) && !defined (WITH_WARNINGS)
static char vcid[] = "$Id: lyx_sendfax_main.C,v 1.1.1.1 1998/04/20 21:14:51 larsbj Exp $" ;
#endif /* lint */
/* Prototypes */
bool sendfax(LString const &fname, LString const &sendcmd);
bool button_send(LString const &fname, LString const &sendcmd = LString());
void show_logfile(LString logfile, bool show_if_empty);
const int LEN_PHONE = 20;
const int LEN_NAME = 25;
/* Global Variables */
LString phone_book;
LString global_sendcmd;
LString filename;
FD_xsendfax *fd_xsendfax;
FD_phonebook *fd_phonebook;
FD_logfile *fd_logfile;
bool send_fax(LString const &fname, LString const &sendcmd)
{
// I put FAXCMD here to see if I can get rid of some strange errors. (Lgb)
LString FAXCMD = "sendfax -n -h '$$Host' -c '$$Comment' -x '$$Enterprise' -d '$$Name'@'$$Phone' '$$FName'" ;
LString title = _("Fax File: " );
LString path;
if (fname.empty())
return false ;
path=OnlyPath(fname);
if (path.empty() || path == "./" )
filename = GetCWD() + "/" + fname;
else
filename = fname;
if (sendcmd.empty())
global_sendcmd = FAXCMD;
else
global_sendcmd = sendcmd;
fd_xsendfax = create_form_xsendfax();
fd_phonebook = create_form_phonebook();
fd_logfile = create_form_logfile();
// Make sure the close box doesn't kill LyX when being pressed. (RvdK)
fl_set_form_atclose(fd_xsendfax->xsendfax, CancelCloseBoxCB, NULL);
fl_set_form_atclose(fd_phonebook->phonebook, CancelCloseBoxCB, NULL);
fl_set_form_atclose(fd_logfile->logfile, CancelCloseBoxCB, NULL);
/* init Phone-Book */
LString phone_book_name;
if (lyxrc->phone_book.empty()) {
phone_book_name = "phonebook" ;
} else
phone_book_name = lyxrc->phone_book;
phone_book=FileSearch(user_lyxdir,phone_book_name);
if (phone_book.empty())
phone_book = AddName(user_lyxdir,phone_book_name);
fl_set_browser_fontsize(fd_phonebook->browser, FL_NORMAL_SIZE);
fl_set_browser_fontstyle(fd_phonebook->browser, FL_FIXED_STYLE);
fl_load_browser(fd_phonebook->browser, phone_book.c_str());
title += OnlyFilename(fname);
/* show the first form */
fl_show_form(fd_xsendfax->xsendfax,FL_PLACE_MOUSE,FL_FULLBORDER,title.c_str());
/*
while(true) {
obj = fl_do_forms();
if (obj==fd_xsendfax->Button_Cancel)
break;
else if (obj==fd_xsendfax->Button_Send) {
if (button_send(fname,global_sendcmd))
break;
} else if (obj==fd_xsendfax->Button_Apply) {
button_send(fname,global_sendcmd);
} else if (obj==fd_xsendfax->Button_SPhone) {
cb_select_phoneno(NULL,0);
}
}
fl_hide_form(fd_xsendfax->xsendfax);
*/
return true ;
}
bool button_send(LString const &fname, LString const &sendcmd)
{
LString
name = fl_get_input(fd_xsendfax->Input_Name),
phone = fl_get_input(fd_xsendfax->Input_Phone),
enterprise = fl_get_input(fd_xsendfax->Input_Enterprise),
comment = fl_get_input(fd_xsendfax->Input_Comment),
host = getenv("FAX_SERVER" ),
logfile,
cmd;
if (phone.empty())
return false ;
logfile = TmpFileName(OnlyPath(fname),"FAX" );
cmd = sendcmd + " >" ;
cmd += logfile + " 2>" ;
cmd += logfile;
cmd.subst("$$Host" ,host);
cmd.subst("$$Comment" ,comment);
cmd.subst("$$Enterprise" ,enterprise);
cmd.subst("$$Name" ,name);
cmd.subst("$$Phone" ,phone);
cmd.subst("$$FName" ,fname);
lyxerr.print("CMD: " +cmd);
Systemcalls one(Systemcalls::System, cmd);
show_logfile(logfile,false );
remove(logfile.c_str());
return true ;
}
void cb_hide_form(FL_OBJECT *ob, long )
{
fl_hide_form(ob->form);
}
void cb_select_phoneno(FL_OBJECT *, long )
{
int
i,
n=fl_get_browser_maxline(fd_phonebook->browser);
char const
*line;
fl_hide_form(fd_phonebook->phonebook);
line = fl_get_browser_line(fd_phonebook->browser, 1);
if (!n || strstr(line,_("Empty Phonebook" ))) {
fl_clear_browser(fd_phonebook->browser);
return ;
}
i = fl_get_browser(fd_phonebook->browser);
line = fl_get_browser_line(fd_phonebook->browser, i);
if (!line)
return ;
char *buf = new char [strlen(line)+1];
strcpy(buf,line);
for (i = LEN_PHONE;(i>0) && (buf[i]==' ' );i--)
;
buf[i+1] = 0;
for (i = LEN_PHONE+LEN_NAME+1;(i>LEN_PHONE) && (buf[i]==' ' );i--)
;
buf[i+1] = 0;
fl_set_input(fd_xsendfax->Input_Phone,buf);
fl_set_input(fd_xsendfax->Input_Name,buf+LEN_PHONE+1);
fl_set_input(fd_xsendfax->Input_Enterprise,buf+LEN_PHONE+LEN_NAME+2);
delete [] buf;
}
void cb_add_phoneno(FL_OBJECT *, long )
{
char const
*line;
char const
*name = fl_get_input(fd_xsendfax->Input_Name),
*phone = fl_get_input(fd_xsendfax->Input_Phone),
*enterprise = fl_get_input(fd_xsendfax->Input_Enterprise);
int
i,n;
if (!strlen(phone))
return ;
char *buf = new char [50+strlen(enterprise)];
sprintf(buf,"%-*.*s %-*.*s %s" ,
LEN_PHONE,LEN_PHONE,phone,
LEN_NAME,LEN_NAME,name,
enterprise);
n = fl_get_browser_maxline(fd_phonebook->browser);
if (n) {
line = fl_get_browser_line(fd_phonebook->browser, 1);
if (strstr(line,_("Empty Phonebook" ))) {
fl_clear_browser(fd_phonebook->browser);
n = 0;
}
}
for (i = 1; i <= n; i++) {
line = fl_get_browser_line(fd_phonebook->browser, i);
if (!strncmp(buf,line,46))
break ;
}
if (i > n) {
fl_addto_browser(fd_phonebook->browser,buf);
fl_set_object_label(fd_xsendfax->pb_save, _("Save (needed)" ));
}
delete [] buf;
}
void cb_delete_phoneno(FL_OBJECT *, long )
{
char const
*line;
char const
*name = fl_get_input(fd_xsendfax->Input_Name),
*phone = fl_get_input(fd_xsendfax->Input_Phone),
*enterprise = fl_get_input(fd_xsendfax->Input_Enterprise);
int
i,n;
if (!strlen(phone))
return ;
char *buf = new char [50+strlen(enterprise)];
sprintf(buf,"%-*.*s %-*.*s %s" ,
LEN_PHONE,LEN_PHONE,phone,
LEN_NAME,LEN_NAME,name,
enterprise);
n = fl_get_browser_maxline(fd_phonebook->browser);
if (n) {
line = fl_get_browser_line(fd_phonebook->browser, 1);
if (strstr(line,_("Empty Phonebook" ))) {
fl_clear_browser(fd_phonebook->browser);
n = 0;
}
}
for (i=1;i<=n;i++) {
line = fl_get_browser_line(fd_phonebook->browser, i);
if (!strncmp(buf,line,46))
break ;
}
if (i <= n) {
fl_delete_browser_line(fd_phonebook->browser,i);
fl_set_object_label(fd_xsendfax->pb_save, _("Save (needed)" ));
}
delete [] buf;
}
void cb_save_phoneno(FL_OBJECT *, long )
{
char const
*line;
int
i,n;
FILE
*fp;
if (!(fp = fopen(phone_book.c_str(),"w" ))) {
WriteAlert(_("Error!" ),_("Cannot open phone book: " ),phone_book);
return ;
}
n = fl_get_browser_maxline(fd_phonebook->browser);
if (n) {
line = fl_get_browser_line(fd_phonebook->browser, 1);
if (strstr(line,_("Empty Phonebook" ))) {
fl_clear_browser(fd_phonebook->browser);
n = 0;
}
}
for (i=1;i<=n;i++) {
line = fl_get_browser_line(fd_phonebook->browser, i);
fprintf(fp,"%s\n" ,line);
}
fclose(fp);
fl_set_object_label(fd_xsendfax->pb_save, _("Save" ));
fl_redraw_form(fd_xsendfax->xsendfax);
}
void show_logfile(LString logfile, bool show_if_empty)
{
if (logfile.empty())
return ;
if (!fl_load_browser(fd_logfile->browser,logfile.c_str())) {
if (!show_if_empty)
return ;
fl_add_browser_line(fd_logfile->browser,
_("NO OR EMPTY LOGFILE!" ));
}
if (fd_logfile->logfile->visible) {
fl_raise_form(fd_logfile->logfile);
} else {
fl_show_form(fd_logfile->logfile,
FL_PLACE_MOUSE | FL_FREE_SIZE,FL_FULLBORDER,
_("Message-Window" ));
}
}
void FaxLogfileCloseCB(FL_OBJECT *, long )
{
fl_hide_form(fd_logfile->logfile);
}
void FaxCancelCB(FL_OBJECT *, long )
{
fl_hide_form(fd_xsendfax->xsendfax);
}
void FaxApplyCB(FL_OBJECT *, long )
{
button_send(filename,global_sendcmd);
}
void FaxSendCB(FL_OBJECT *, long )
{
if (button_send(filename,global_sendcmd))
FaxCancelCB(NULL,0);
}
void FaxOpenPhonebookCB(FL_OBJECT *, long )
{
int
n=fl_get_browser_maxline(fd_phonebook->browser);
if (!n)
fl_addto_browser(fd_phonebook->browser,_("@L@b@cEmpty Phonebook" ));
fl_show_form(fd_phonebook->phonebook,FL_PLACE_MOUSE,FL_FULLBORDER,
_("Phonebook" ));
}
quality 92%
¤ Dauer der Verarbeitung: 0.2 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland