home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 1
/
crawlyvol1.bin
/
bbs
/
jet_conf
/
hndlmenu.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-05-11
|
12KB
|
557 lines
/*
* HNDLMENU.C
*
* handles MN_SELECTED-events of jet_conf.prg;
*
*/
/*--- includes ---*/
#include "import.h"
#include <MGLOBAL.H>
#include <MYDIAL.H>
#include "misc.h"
#include "jet_conf.h"
#include "resource.h"
#include "lists.h"
#include "export.h"
#include "hndlmenu.h"
/*--- defines ---*/
#define NETM_P path_heads[0]
#define MAIL_P path_heads[1]
#define ARCH_P path_heads[2]
#define BADM_P path_heads[3]
#define DUPE_P path_heads[4]
#define INBO_P path_heads[5]
#define KINB_P path_heads[6]
#define PINB_P path_heads[7]
#define OUTB_P path_heads[8]
#define NODE_P path_heads[9]
#define LOGF_P path_heads[10]
#define ABOU_P path_heads[11]
#define NETM_N path_names[0]
#define MAIL_N path_names[1]
#define ARCH_N path_names[2]
#define BADM_N path_names[3]
#define DUPE_N path_names[4]
#define LOGF_N path_names[5]
#define ARC_P arch_heads[0]
#define ARC_E arch_heads[1]
#define LZH_P arch_heads[2]
#define LZH_E arch_heads[3]
#define LHA_P arch_heads[4]
#define LHA_E arch_heads[5]
#define ZIP_P arch_heads[6]
#define ZIP_E arch_heads[7]
#define ZOO_P arch_heads[8]
#define ZOO_E arch_heads[9]
#define ARJ_P arch_heads[10]
#define ARJ_E arch_heads[11]
#define ARC_N arch_names[0]
#define LZH_N arch_names[1]
#define ZIP_N arch_names[2]
#define ZOO_N arch_names[3]
#define ARJ_N arch_names[4]
/*--- types ---*/
/*--- variables ---*/
LOCAL BYTE *path_heads[] = {
"Netmail path",
"Mailbox path",
"Archive path",
"BadMsgs path",
"DupeMsgs path",
"Inbound path",
"KnownInbound path",
"ProtInbound path",
"Outbound path",
"Nodelist path",
"Logfile path",
"Aboutfile"
};
LOCAL BYTE *path_names[] = {
"NETMAIL",
"MAILBOX",
"ARCHIVE",
"BADMSGS",
"DUPEMSGS",
"SYSTEM.LOG"
};
LOCAL BYTE *arch_heads[] = {
"Arc Pack",
"Arc Extract",
"LZH Pack",
"LZH Extract",
"LHA Pack",
"LHA Extract",
"Zip Pack",
"Zip Extract",
"Zoo Pack",
"Zoo Extract",
"Arj Pack",
"Arj Extract"
};
LOCAL BYTE *arch_names[] = {
"ARC.TTP",
"LHARC.TTP",
"STZIP.PRG",
"ZOO.TTP",
"UNARJ.TTP"
};
/* Lokale Variablen für die Pfad- und Dateinamenssicherung */
LOCAL BYTE rpath[256],
rname[14];
/*--- prototypes ---*/
LOCAL VOID DoSetSystem( VOID );
LOCAL VOID DoSetFlags( VOID );
LOCAL VOID DoSetPath( VOID );
LOCAL VOID DoSetArchivers( VOID );
LOCAL VOID DoSetLinks( VOID );
LOCAL VOID ClearSelected( OBJECT *tree, WORD object );
/*--- functions ---*/
/**-----------------------------------------------------------------------------
** Funktionsname: GLOBAL WORD mn_selected( WORD titel, WORD item )
** -> nichts
** <- Exitcode für das Programm.
**
** Die Funktion handelt einen selektierten Menüeintrag ab.
**/
GLOBAL WORD mn_selected( WORD titel, WORD item )
{
BOOLEAN ok;
WORD Ret = 0;
switch( item )
{
case INFOS:
(VOID) HndlDial( info_box, 0, FALSE, NULL, &ok );
break;
case LOAD_CONF:
break;
case SAVE_CONF:
break;
case QUIT:
Ret = -1;
break;
case SET_SYSTEM:
DoSetSystem( );
break;
case SET_FLAGS:
DoSetFlags( );
break;
case SET_PATH:
DoSetPath( );
break;
case SET_ARCHIVERS:
DoSetArchivers( );
break;
case SET_LINKS:
DoSetLinks( );
break;
case SET_GROUPS:
break;
}
menu_tnormal( menutree, titel, 1 );
return( Ret );
}
/**-----------------------------------------------------------------------------
** Funktionsname: LOCAL VOID DoSetSystem( VOID )
** -> nichts
** <- nichts
**
** Die Funktion übernimmt die Konfiguration der Systemeinstellungen.
**/
LOCAL VOID DoSetSystem( VOID )
{
BOOLEAN ok;
WORD rc = -1;
DIALINFO di;
open_dial( syst_box, FALSE, NULL, &di );
dial_draw( &di );
while( rc != OK_SYST )
{
rc = dial_do( &di, 0, NULL );
switch( rc )
{
case SYST_DOMA:
(VOID) HndlDial( doma_box, 0, FALSE, NULL, &ok );
break;
case SYST_ADDR:
(VOID) HndlDial( addr_box, 0, FALSE, NULL, &ok );
break;
}
}
ClearSelected( syst_box, rc );
close_dial( FALSE, NULL, &di );
}
/**-----------------------------------------------------------------------------
** Funktionsname: LOCAL VOID DoSetFlags( VOID )
** -> nichts
** <- nichts
**
** Die Funktion übernimmt die Behandlung der Flags-Box.
**/
LOCAL VOID DoSetFlags( VOID )
{
BOOLEAN ok;
WORD rc = -1;
DIALINFO di;
open_dial( flag_box, FALSE, NULL, &di );
dial_draw( &di );
while( rc != OK_FLAG )
{
rc = dial_do( &di, 0, NULL );
switch( rc )
{
case TAS_MSGID:
case POP_MSGID:
popup_select( flag_box, POP_MSGID, popup, POP_OMODE, 0, 0, &ok );
break;
case CIR_MSGID:
popup_select( flag_box, POP_MSGID, popup, POP_OMODE, 0, -2, &ok );
break;
case TAS_PKTTP:
case POP_PKTTP:
popup_select( flag_box, POP_PKTTP, popup, POP_PKTTYPE, 0, 0, &ok );
break;
case CIR_PKTTP:
popup_select( flag_box, POP_PKTTP, popup, POP_PKTTYPE, 0, -2, &ok );
break;
case TAS_ORIGM:
case POP_ORIGM:
popup_select( flag_box, POP_ORIGM, popup, POP_OMODE, 0, 0, &ok );
break;
case CIR_ORIGM:
popup_select( flag_box, POP_ORIGM, popup, POP_OMODE, 0, -2, &ok );
break;
}
}
ClearSelected( flag_box, rc );
close_dial( FALSE, NULL, &di );
}
/**-----------------------------------------------------------------------------
** Funktionsname: LOCAL VOID DoSetPath( VOID )
** -> nichts
** <- nichts
**
** Funktion zur Pfadeinstellung.
**/
LOCAL VOID DoSetPath( VOID )
{
WORD rc = -1, x_coor, y_coor;
BYTE *head, *fn, cpath[256];
DIALINFO di;
open_dial( path_box, FALSE, NULL, &di );
dial_draw( &di );
while( rc != OK_PATH )
{
rname[0] = '\0';
rc = dial_do( &di, 0, NULL );
rc &= 0x00ff; /* Bit 15 könnte gesetzt sein (Doppelklick) */
switch( rc )
{
case NETMAILP:
head = NETM_P;
fn = NETM_N;
break;
case MAILBOXP:
head = MAIL_P;
fn = MAIL_N;
break;
case ARCHIVEP:
head = ARCH_P;
fn = ARCH_N;
break;
case BADMSGSP:
head = BADM_P;
fn = BADM_N;
break;
case DUPMSGSP:
head = DUPE_P;
fn = DUPE_N;
break;
case INBOUNDP:
head = INBO_P;
fn = NULL;
break;
case KINBONDP:
head = KINB_P;
fn = NULL;
break;
case PINBONDP:
head = PINB_P;
fn = NULL;
break;
case HOLD:
head = OUTB_P;
fn = NULL;
break;
case NODELSTP:
head = NODE_P;
fn = NULL;
break;
case SYSLOGP:
head = LOGF_P;
fn = LOGF_N;
break;
case ABOUTFP:
head = ABOU_P;
fn = NULL;
break;
default:
head = NULL;
}
if( head )
{
if( fn )
strcpy( rname, fn );
/* FileSelector aufrufen und auf Abbruch-Button testen: */
if( select_file( rpath, rname, head ) )
{
strcpy( cpath, rpath );
/* Filename rankopieren, falls nötig: */
switch( rc )
{
case NETMAILP:
case MAILBOXP:
case ARCHIVEP:
case BADMSGSP:
case DUPMSGSP:
head = strrchr( rname, '.' );
if( !head && !strlen( rname ) )
continue;
if( head )
*head = '\0';
case ABOUTFP:
case SYSLOGP:
strcat( cpath, rname );
}
/* ptext einsetzen: */
set_ptext( path_box, rc, cpath );
/* Redraw-Area ermitteln: */
objc_offset( path_box, rc, &x_coor, &y_coor );
/* Neuzeichnen: */
objc_draw( path_box, rc, MAX_DEPTH, x_coor, y_coor,
path_box[rc].ob_width, path_box[rc].ob_height );
}
}
}
ClearSelected( path_box, rc );
close_dial( FALSE, NULL, &di );
}
/**-----------------------------------------------------------------------------
** Funktionsname: LOCAL VOID DoSetArchivers( VOID )
** -> nichts
** <- nichts
**
** Funktion zur Packereinstellung.
**/
LOCAL VOID DoSetArchivers( VOID )
{
WORD rc = -1, x_coor, y_coor;
BYTE *head, *fn, cpath[256];
DIALINFO di;
open_dial( arch_box, FALSE, NULL, &di );
dial_draw( &di );
while( rc != OK_ARCH )
{
rname[0] = '\0';
rc = dial_do( &di, 0, NULL );
rc &= 0x00ff; /* Bit 15 könnte gesetzt sein (Doppelklick) */
switch( rc )
{
case ARC_PACK:
head = ARC_P;
fn = ARC_N;
break;
case ARC_EXTRACT:
head = ARC_E;
fn = ARC_N;
break;
case LZH_PACK:
head = LZH_P;
fn = LZH_N;
break;
case LZH_EXTRACT:
head = LZH_E;
fn = LZH_N;
break;
case LHA_PACK:
head = LHA_P;
fn = LZH_N;
break;
case LHA_EXTRACT:
head = LHA_E;
fn = LZH_N;
break;
case ZIP_PACK:
head = ZIP_P;
fn = ZIP_N;
break;
case ZIP_EXTRACT:
head = ZIP_E;
fn = ZIP_N;
break;
case ZOO_PACK:
head = ZOO_P;
fn = ZOO_N;
break;
case ZOO_EXTRACT:
head = ZOO_E;
fn = ZOO_N;
break;
case ARJ_PACK:
head = ARJ_P;
fn = NULL;
break;
case ARJ_EXTRACT:
head = ARJ_E;
fn = ARJ_N;
break;
default:
head = NULL;
}
if( head )
{
if( fn )
strcpy( rname, fn );
/* FileSelector aufrufen und auf Abbruch-Button testen: */
if( select_file( rpath, rname, head ) )
{
strcpy( cpath, rpath );
/* Ist ein Filename ausgewählt? */
if( !strchr( rname, '.' ) )
continue;
/* Filename rankopieren: */
strcat( cpath, rname );
/* ptext einsetzen: */
set_ptext( arch_box, rc, cpath );
/* Redraw-Area ermitteln: */
objc_offset( arch_box, rc, &x_coor, &y_coor );
/* Neuzeichnen: */
objc_draw( arch_box, rc, MAX_DEPTH, x_coor, y_coor,
arch_box[rc].ob_width, arch_box[rc].ob_height );
}
}
}
ClearSelected( arch_box, rc );
close_dial( FALSE, NULL, &di );
}
/**-----------------------------------------------------------------------------
** Funktionsname: LOCAL VOID DoSetLinks( VOID )
** -> nichts
** <- nichts
**
** Die Funktion übernimmt die Verwaltung der Links.
**/
LOCAL VOID DoSetLinks( VOID )
{
WORD rc = -1;
DIALINFO di;
open_dial( lklb_box, FALSE, NULL, &di );
dial_draw( &di );
while( rc != OK_LKLB )
{
rc = dial_do( &di, 0, &linklist );
switch( rc )
{
case LK_MORE:
reset_linkbox( );
hndl_linkbox( );
/*
setup_link( );
*/
break;
case LK_CHGE:
/*
set_linkbox( linklist.active );
handle_linkbox( );
setup_link( );
*/
break;
case LK_DEL:
/*
delete_link( linklist.active );
*/
break;
}
}
ClearSelected( lklb_box, rc );
close_dial( FALSE, NULL, &di );
}
/**-----------------------------------------------------------------------------
** Funktionsname: LOCAL VOID ClearSelected( OBJECT *tree, WORD object )
** -> Tree und Objektnummer
** <- nichts
**
** Die Funktion löscht den SELECTED-Status eines Objekts.
**/
LOCAL VOID ClearSelected( OBJECT *tree, WORD object )
{
tree[object].ob_state &= 0xFFFE;
}