/* * 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; }