REM $OPTION Y
DEFINT a-z

'REM $include intuition.bh
'REM $include gadtools.bh
'REM $include graphics.bh
'REM $include exec.bh
'REM $include Blib/ExecSupport.bas

LIBRARY OPEN "intuition.library",37
LIBRARY OPEN "gadtools.library",37
LIBRARY OPEN "graphics.library",37
LIBRARY OPEN "exec.library"

REM $NOEVENT

CONST MA_MAINMENU	=0
CONST MA_DISPLAY	=1
CONST MA_SYSTEM		=2
CONST MA_FILEAREAS	=3
CONST MA_MSGAREAS	=4
CONST MA_MODEM		=5
CONST MA_PATHS		=6
CONST MA_MENUS		=7
CONST MA_PROTOCOLS	=8
CONST MA_EMULATIONS	=9
CONST MA_MACROS		=10
CONST MA_FIDONET	=11
CONST MA_LANGUAGES	=12
CONST MA_TEXTLINES	=13
CONST MA_USERDEFAULTS	=14
CONST MA_UNUSED		=15
CONST MA_FILEED		=16
CONST MA_USERED		=17
CONST MA_LOGFILES	=18
CONST MA_UNUSED2	=19

CONST US_MAINMENU	=1

SUB InitTextAttr(T(1),FontName$,BYVAL Height,BYVAL style,BYVAL flags)
POKEL VARPTR(T(0))+ta_Name%,SADD(FontName$+CHR$(0))
t(ta_YSize\2)=Height
POKEB VARPTR(T(0))+ta_Style,style
POKEB VARPTR(T(0))+ta_Flags,flags
END SUB

DIM SHARED temptag&(40),junk&,TERMINATED,textattr&,fontsize&,thetopborder
DIM SHARED winheight&,rp&,vi&,h&,CMENU,glist&

gadtoolswindow
SYSTEM

FUNCTION USEREDITORGadgets&(glistptr&, BYVAL vi&, BYVAL thetopborder, my_gads&(1))
SHARED ng(1)
STATIC gad&
STATIC gadgettags&(1)
gad& = CreateContext&(VARPTR(glistptr&))

DIM ng(NewGadget_sizeof\2)
DIM GadgetTags&(20)

ng(ng_LeftEdge\2)   = 28
ng(ng_TopEdge\2)    = thetopborder+h&
ng(ng_Width\2)      = 102
ng(ng_Height\2)     = fontsize&+4
Setng_GadgetText "Main Menu"
POKEL VARPTR(ng(ng_TextAttr\2)),textattr&
POKEL VARPTR(ng(ng_visualInfo\2)),vi&
ng(ng_GadgetID\2)  = US_MAINMENU
ng(ng_Flags\2)      = NG_HIGHLABEL&

  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "System"
ng(ng_GadgetID\2)   = MA_SYSTEM
ng(ng_Flags\2)      = 0
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ERASE gadgettags&, ng
USEREDITORGadgets&=gad&
END FUNCTION


FUNCTION MAINGadgets&(glistptr&, BYVAL vi&, BYVAL thetopborder, my_gads&(1))
SHARED ng(1)
STATIC gad&
STATIC gadgettags&(1)
gad& = CreateContext&(VARPTR(glistptr&))

DIM ng(NewGadget_sizeof\2)
DIM GadgetTags&(20)

BevBox 0,10,5,546,(fontsize&+4)*4
move rp&,70,thetopborder+(h&/2)+1
Text rp&,SADD("Configuration"+CHR$(0)),13&

BevBox 0,10,(h&*5.5),546,h&*2
move rp&,70,thetopborder+(h&*5.5)+1
text rp&,SADD("Maintainance"+CHR$(0)),12&

ng(ng_LeftEdge\2)   = 28
ng(ng_TopEdge\2)    = thetopborder+h&
ng(ng_Width\2)      = 102
ng(ng_Height\2)     = fontsize&+4
Setng_GadgetText "Display"
POKEL VARPTR(ng(ng_TextAttr\2)),textattr&
POKEL VARPTR(ng(ng_visualInfo\2)),vi&
ng(ng_GadgetID\2)  = MA_DISPLAY
ng(ng_Flags\2)      = NG_HIGHLABEL&

  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "System"
ng(ng_GadgetID\2)   = MA_SYSTEM
ng(ng_Flags\2)      = 0
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "File Areas"
ng(ng_GadgetID\2)   = MA_FILEAREAS
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "Msg Areas"
ng(ng_GadgetID\2)   = MA_MSGAREA
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "Modem"
ng(ng_GadgetID\2)   = MA_MODEM
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))
 
ng(ng_LeftEdge\2)   = 28
ng(ng_TopEdge\2)    = ng(ng_TopEdge\2)+fontsize&+4
Setng_GadgetText  "Paths"
ng(ng_GadgetID\2)   = MA_PATHS
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))
 
ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "Menus"
ng(ng_GadgetID\2)   = MA_MENUS
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))
 
ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "Protocols"
ng(ng_GadgetID\2)   = MA_Protocols
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "Emulations"
ng(ng_GadgetID\2)   = MA_EMULATIONS
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))
  
ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "Macros"
ng(ng_GadgetID\2)   = MA_MACROS
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))
 
ng(ng_LeftEdge\2)   = 28
ng(ng_TopEdge\2)    = ng(ng_TopEdge\2)+fontsize&+4
Setng_GadgetText  "Fido Net"
ng(ng_GadgetID\2)   = MA_FIDONET
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "Languages"
ng(ng_GadgetID\2)   = MA_LANGUAGES
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "Text Lines"
ng(ng_GadgetID\2)   = MA_TEXTLINES
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))
 
ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "User Defaults"
ng(ng_GadgetID\2)   = MA_USERDEFAULTS
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+102
Setng_GadgetText  "<unused>"
ng(ng_GadgetID\2)   = MA_UNUSED
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = 28
ng(ng_Width\2)      = 127
ng(ng_TopEdge\2)    = thetopborder+(h&*6)
Setng_GadgetText  "File Editor"
ng(ng_GadgetID\2)   = MA_FILEED
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+127
Setng_GadgetText  "User Editor"
ng(ng_GadgetID\2)   = MA_USERED
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+127
Setng_GadgetText  "Log Files"
ng(ng_GadgetID\2)   = MA_LOGFILES
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ng(ng_LeftEdge\2)   = ng(ng_LeftEdge\2)+127
Setng_GadgetText  "<unused>"
ng(ng_GadgetID\2)   = MA_UNUSED2
  TAGLIST VARPTR(GadgetTags&(0)), GT_Underscore&, "_"%, TAG_END&
 gad& = CreateGadgetA&(BUTTON_KIND&, gad&, VARPTR(ng(0)), VARPTR(gadgetTags&(0)))

ERASE gadgettags&, ng

MAINGadgets&=gad&
END FUNCTION



SUB MAINGadgetEvent(BYVAL win&, BYVAL gad&, BYVAL code, my_gads&(1))
STATIC gid
gid=PEEKW(gad&+gadgetgadgetid)
SELECT CASE Gid
    CASE MA_USEREDITOR
    	CHANGEGADGETS 17,my_gads&()
    CASE MYGAD_DESCLINES:
    	Declines=PEEKL(PEEKL(gad&+GadgetSpecialInfo)+StringInfoLongInt)
	t$=STR$(declines)
    CASE kgkjf
  	sysopname$=PEEK$(PEEKL(PEEKL(gad&+GadgetSpecialInfo)+StringInfoBuffer))
    END SELECT
END SUB

SUB USEREDITORGadgetEvent(BYVAL win&, BYVAL gad&, BYVAL code, my_gads&(1))
STATIC gid
gid=PEEKW(gad&+gadgetgadgetid)
SELECT CASE Gid
    CASE US_MAINMENU
    	CHANGEGADGETS 0,my_gads&()
    	'Declines=PEEKL(PEEKL(gad&+GadgetSpecialInfo)+StringInfoLongInt)
	't$=STR$(declines)
    END SELECT
END SUB

SUB CHANGEGADGETS (BYVAL a,my_gads&(1))
SELECT CASE a
	CASE MA_MAINMENU
		x = MAINGadgets&(glist&,vi&,thetopborder,my_gads&())
	CASE MA_USERED:
		x = USEREDITORGadgets&(glist&,vi&,thetopborder,my_gads&())
END SELECT
IF x=0 THEN ? "Can't create gadgets"
CMENU=a
x = AddGList& (mywin&,glist&,0,-1,0)
RefreshGadgets& glist&,mywin&,0
END SUB

SUB Setng_GadgetText(a$)
SHARED ng(1)
POKEL VARPTR(ng(ng_GadgetText\2)),SADD(a$+CHR$(0))
END SUB

SUB Setng_ArrayName(BYVAL fieldoffset,arr(1))
SHARED ng(1)
POKEL VARPTR(ng(fieldoffset\2)),VARPTR(arr(0))
END SUB


SUB  Process_window_events(BYVAL mywin&, my_gads&())
STATIC imsg&
STATIC imsgClass&
STATIC imsgCode
STATIC gad&
'STATIC terminated

WHILE terminated=0
    junk&= xWait&(1& << PEEKB(PEEKL(mywin&+UserPort)+mp_SigBit))

     DO
       imsg& = GT_GetIMsg(PEEKL(mywin&+UserPort))
       IF imsg&=0  THEN EXIT LOOP
        gad& = PEEKL(imsg&+IAddress)

        imsgClass& =PEEKL(imsg&+Class)
        imsgCode =PEEKW(imsg&+IntuiMessageCode)

        GT_ReplyIMsg imsg&
		SELECT CASE imsgClass&
            CASE IDCMP_GADGETDOWN&, IDCMP_MOUSEMOVE&, IDCMP_GADGETUP&:
              IF CMENU=MA_MAINMENU THEN MAINGadgetEvent mywin&, gad&, imsgCode, my_gads&()
              IF CMENU=MA_USEREDITOR THEN USEREDITORGadgetEvent mywin&, gad&, imsgCode, my_gads&()
            CASE IDCMP_CLOSEWINDOW&:
                terminated = 1
            CASE IDCMP_REFRESHWINDOW&:
                GT_BeginRefresh mywin&
                GT_EndRefresh mywin&, TRUE&
		END SELECT
	LOOP UNTIL terminated
WEND
END SUB

SUB GadtoolsWindow
STATIC glist&
STATIC font&
STATIC mysc&
STATIC mywin&
DIM my_gads&(13)
STATIC vi&
STATIC thetopborder
    mysc& = LockPubScreen(0)
    IF mysc&=0 THEN
		PRINT "Couldn't lock public screen"
    ELSE
    	TAGLIST VARPTR(temptag&(0)), TAG_END&
		vi& = GetVisualInfoA&(mysc&, VARPTR(temptag&(0)))
	IF vi& = 0 THEN
            PRINT "GetVisualInfo failed"
        ELSE
            thetopborder =  PEEKB(mysc&+WBorTop) + PEEKW(PEEKL(mysc&+ScreenFont)+ta_YSize) + 1
            fontsize& = PEEKW(PEEKL(mysc&+ScreenFont)+ta_YSize)
            textattr& =  PEEKL(mysc&+ScreenFont)
            h& = fontsize&+4
            	winheight&=((fontsize&+4)*21)-thetopborder
            	? winheight&
                TAGLIST VARPTR(temptag&(0)), _
                        WA_Title&,     "No-Name BBS Configuration Program - By Peter Zelezny", _
                        WA_Left&,	  15&,      WA_Top&,		  1&, _
                        WA_AutoAdjust&, TRUE&, _
                        WA_Width&,       566&, _
                        WA_InnerHeight&, winheight&, _
                        WA_DragBar&,    TRUE&,      WA_DepthGadget&,   TRUE&, _
                        WA_Activate&,   TRUE&,      WA_CloseGadget&,   TRUE&, _
                        WA_SizeGadget&, FALSE&,     WA_SimpleRefresh&, TRUE&, _
                        WA_IDCMP&, IDCMP_CLOSEWINDOW&+IDCMP_REFRESHWINDOW&+ _
                            IDCMP_VANILLAKEY&+ SLIDERIDCMP&+ STRINGIDCMP&+ BUTTONIDCMP&, _
                        WA_PubScreen&, mysc&, _
                        TAG_END&
                mywin& = OpenWindowTagList&(0,VARPTR(temptag&(0)))
				IF mywin&=0 THEN
                    PRINT "OpenWindow failed"
                ELSE
              		rp&=PEEKL(mywin&+rport)
              		pfont& = OpenFont&(textattr&)
              		SetFont& rp&,pfont&
			ChangeGadgets MA_MAINMENU,my_gads&()
                    GT_RefreshWindow mywin&, 0
                    process_window_events mywin&, my_gads&()
                    CloseWindow mywin&
                END IF
            FreeGadgets glist&
            FreeVisualInfo vi&
        END IF
        UnlockPubScreen 0, mysc&
    END IF
    CloseFont pfont& 
END SUB

SUB BevBox (t&,a,b,c,d)
b=b+thetopborder
IF t&=1 THEN
TAGLIST VARPTR(temptag&(0)),_
	GT_VisualInfo&, vi&,_
	GTBB_Recessed&,  t&,_
	TAG_END&
ELSE
TAGLIST VARPTR(temptag&(0)),_
	GT_VisualInfo&, vi&,_
	TAG_END&
END IF
DrawBevelBoxA rp&,a,b,c,d,VARPTR(temptag&(0))
?"1"
END SUB
