'***********************  
'* COMPILER DIRECTIVES * 
'*********************** 
$APPTYPE  GUI
$TYPECHECK ON
$INCLUDE "RAPIDQ.INC"

$OPTION ICON "micon.ico"

$RESOURCE ImgTop AS "mutop.bmp"
$RESOURCE Icon AS "micon.ico"

'************************** 
'* DECLARE SUBS/FUNCTIONS * 
'************************** 
DECLARE SUB Quit
DECLARE SUB CreateNew
DECLARE SUB Remove
DECLARE SUB About
DECLARE SUB Launch

DECLARE SUB StartMoveForm(Button%,X%,Y%,Shift%)
DECLARE SUB MoveForm(X%, Y%, Shift%)
DECLARE SUB StopMoveForm(Button%, X%, Y%)

DECLARE SUB DrawFormBorder(Sender AS QForm)

'********************* 
'* PROGRAM CONSTANTS * 
'********************* 

'******************** 
'* GLOBAL VARIABLES * 
'******************** 
DIM FormMoving AS INTEGER
DIM MouseLastX AS INTEGER
DIM MouseLastY AS INTEGER
DIM Moving AS INTEGER
DIM Dummy AS INTEGER
DIM Dummy2 AS INTEGER

'***************** 
'* FORM CREATION * 
'***************** 
CREATE Form AS QFORM
    Caption = "Multi User front end"
    Width = 345
    Height = 245
    BorderStyle = bsNone
    IcoHandle = Icon
    Center
    OnPaint = DrawFormBorder
    CREATE TopImg AS QImage
	  Align = alTop
	  BMPHandle = ImgTop
        OnMouseDown = StartMoveForm
        OnMouseMove = MoveForm
        OnMouseUp = StopMoveForm
	Line(0,0,0,25,&H000000)
	Line(1,0,1,25,&H000000)
	Line(344,0,344,25,&H000000)
	Line(343,0,343,25,&H000000)
    END CREATE
    CREATE IL1 AS QLABEL
        Caption = "Profiles:"
        Left = 5
        Top = 30
        Width = 64
    END CREATE
    CREATE CFWFiles AS QFILELISTBOX
        Left = 5
        Top = 45
        Width = 161
        Height = 195
        Mask = "*.cfw"
        ShowIcons = 1
	  OnDblClick = Launch
    END CREATE
    CREATE BTN1 AS QBUTTON
        Caption = "&Run profile"
        Left = 170
        Top = 45
        Width = 170
	  OnClick = Launch
    END CREATE
    CREATE BTN2 AS QBUTTON
        Caption = "&Remove profile"
        Left = 170
        Top = 75
        Width = 170
	  OnClick = Remove
    END CREATE
    CREATE GB1 AS QGROUPBOX
        Caption = "Create new profile..."
        Left = 170
        Top = 105
        Width = 170
        Height = 73
        CREATE IL2 AS QLABEL
            Caption = "Name:"
            Left = 5
            Top = 15
        END CREATE
        CREATE NameBox AS QEDIT
            Text = ""
            Left = 40
            Top = 13
        END CREATE
        CREATE BTN3 AS QBUTTON
            Caption = "&Create"
            Left = 5
            Top = 40
            Width = 160
		OnClick = CreateNew
        END CREATE
    END CREATE
    CREATE BTN4 AS QBUTTON
        Caption = "&About..."
        Left = 170
        Top = 185
        Width = 170
	  OnClick = About
    END CREATE
    CREATE BTN5 AS QBUTTON
        Caption = "E&xit"
        Left = 170
        Top = 215
        Width = 170
	  OnClick = Quit
    END CREATE
END CREATE

'************* 
'* FUNCTIONS * 
'************* 

'******** 
'* SUBS * 
'******** 
SUB Quit
Application.Terminate
END SUB

SUB CreateNew
DIM Creator AS QFileStream
IF NameBox.Text = "" THEN
	'Ignore 
	ShowMessage "You need to type in a name before you can create a profile!"
ELSE
	'Create it... 
	IF FileExists(NameBox.Text) THEN
		ShowMessage "The profile you are trying to create already exists. Please try another."
	ELSE
		Creator.Open(NameBox.Text+".cfw",fmCreate)
		NameBox.Text = ""
		Creator.Close
	END IF
END IF
CFWFiles.Update
END SUB

SUB Remove
'Find selected, prompt, and remove... 
IF CFWFiles.ItemIndex = -1 THEN
	'You have not selected a file! 
	ShowMessage "You have not selected a profile to remove!"
ELSE
	'You have... 
	IF MessageDlg("Are you sure you want to delete this profile?",mtWarning,mbYes OR mbNo,0) = mrYes THEN
		'Delete it... 
		KILL CFWFiles.Filename
	END IF
END IF
CFWFiles.Update
END SUB

SUB About
DIM AboutStr$ AS STRING
AboutStr$ = "Multiuser front end for Console for Windows"+CHR$(13)
AboutStr$ = AboutStr$ + "Written by Daniel Foote."+CHR$(13)
AboutStr$ = AboutStr$ + "Official web page: http://freefoote.dview.net/cfw"
ShowMessage AboutStr$
END SUB

SUB Launch
'This should be easy... 
IF CFWFiles.ItemIndex = -1 THEN
	'You need to select a file! 
	ShowMessage "You have not selected a profile to run!"
ELSE
	'You have... 
	RUN "console2.exe "+CHR$(34)+CFWFiles.Filename+CHR$(34)
	Application.Terminate
END IF
END SUB

'Subs to move the form... 
SUB StartMoveForm(Button%,X%,Y%,Shift%)
IF Button% = 0 THEN
	FormMoving = True
	MouseLastX = X%
	MouseLastY = Y%
END IF
END SUB

SUB MoveForm(X%, Y%, Shift%)
'Calculate... 
IF Moving = True THEN
	EXIT SUB
END IF
Moving = True
IF FormMoving = True THEN
	Dummy = -(MouseLastX - X%)
	Dummy2 = -(MouseLastY - Y%)
	'Move... 
	Form.Left = Form.Left + Dummy
	Form.Top = Form.Top + Dummy2
END IF
Moving = False
END SUB

SUB StopMoveForm(Button%, X%, Y%, Shift%)
FormMoving = False
END SUB

SUB DrawFormBorder(Sender AS QForm)
'Draw a black border on the form specified... 
Sender.Line(0,0,0,Sender.Height-1,&H000000)
Sender.Line(1,0,1,Sender.Height-1,&H000000)
Sender.Line(0,Sender.Height-1,Sender.Width-1,Sender.Height-1,&H000000)
Sender.Line(0,Sender.Height-2,Sender.Width-1,Sender.Height-2,&H000000)
Sender.Line(Sender.Width-1,Sender.Height-1,Sender.Width-1,0,&H000000)
Sender.Line(Sender.Width-2,Sender.Height-1,Sender.Width-2,0,&H000000)
END SUB

'********************* 
'* MAIN PROGRAM CODE * 
'********************* 
Application.IconHandle = Icon
Application.Title = "Multi user front end"
Form.ShowModal