Compile function SRP_GIT_SETTINGS_EVENTS(Event, CtrlEntId, @PARAMS)
/************************************************************************************************
*
* This program is proprietary and is not to be used by or disclosed to others, nor is it to
* be copied without written permission from SRP Computer Solutions, Inc.
*
* Name       :  SRP_GIT_SETTINGS_Events
*
* Description:  Event handling commuter module for the SRP_GIT_SETTINGS form.
*
* User Defined Properties:
*
* Parameters:
*	EventID		[in] -- Event ID
*	CtrlEntId	[in] -- Control whose event is being handled
*	Param1-13	[in] -- Event Parameters
*
* Returns:
*	Event handling result, usually 1
*
* History (Date, Initials, Notes)
*	02/25/19    DJS    Original programmer
*	07/29/19    KRF    Updated with different controls and cleaned up the code
*
************************************************************************************************/
#pragma precomp SRP_PreCompiler
#window SRP_GIT_SETTINGS

$Insert LOGICAL

Declare function SRP_Git_Services, Get_Property, Utility
Declare subroutine SRP_Git_Services, Set_Property, Post_Event, Send_Message

GoToEvent Event for CtrlEntId else
    // Event not implemented
end

Return 1

//-----------------------------------------------------------------------------
// EVENT HANDLERS
//-----------------------------------------------------------------------------

Event WINDOW.CREATE(CreateParam)
    
    GoSub Setup_OLE_Controls
    GoSub FillUserSettings
    
End Event


Event PUB_APPLY.CLICK()
    
    GoSub SaveUserSettings
    Set_Property(CtrlEntID, 'ENABLED', False$)

end event


Event PUB_OK.CLICK()
    
    GoSub SaveUserSettings
    Post_Event(@Window, 'CLOSE')
    
end event


Event CHB_ENABLED.CLICK()
    
    GoSub CheckModified
    
end event


Event EDL_REPO_LOC.LOSTFOCUS(Flag, FocusID)
    
    GoSub CheckModified
    
end event


Event EDL_GIT_LOC.LOSTFOCUS(Flag, FocusID)
    
    GoSub CheckModified
    
end event


Event EDL_GUI_LOC.LOSTFOCUS(Flag, FocusID)
    
    GoSub CheckModified
    
end event


Event EDL_WARNING.LOSTFOCUS(Flag, FocusID)
    
    GoSub CheckModified
    
end event


Event OLE_SUBCLASS.OnOptionClick(CtrlId)
    
    OrigDirectory = Get_Property(CtrlId, 'TEXT')
    
    If CtrlId[-1, "B."] EQ "EDL_REPO_LOC" then
        Directory = Utility("CHOOSEDIR", @Window, "Select directory":@FM:"%HOMEPATH%")
    end else
        Directory = Utility("CHOOSEFILE", @Window, "Select executable":@FM:"%HOMEPATH%")
    end
       
    If Directory NE '' then
        Set_Property(CtrlId, 'TEXT', Directory)
        GoSub CheckModified
    end
        
end event


* Event OLE_EDITTABLE_GIT.OnOptionClick(Cell, Point, Button, Shift, Ctrl)
*    
*    Col = Field(Cell, ';', 1)
*    Row = Field(Cell, ';', 2)
*    OrigDirectory = Get_Property(CtrlEntID, 'OLE.CellText[':Col:'; ':Row:']')
*    Directory     = Utility("CHOOSEFILE", @Window, "Select executable":@FM:"%HOMEPATH%")
*    If Directory NE '' then
*        Set_Property(CtrlEntID, 'OLE.CellText[':Col:'; ':Row:']', Directory) 
*        GoSub CheckModified
*    end
*    
* end event


Event OLE_EDITTABLE_GIT.AfterUpdate(Cell, Text, Pattern, OldText)
    GoSub CheckModified
end event


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Setup_OLE_Controls:
    
	// Add browse buttons
    Ctrl = @Window:".OLE_SUBCLASS"
	CtrlIds = "EDL_REPO_LOC,EDL_GIT_LOC,EDL_GUI_LOC"
	For i = 1 to 3
        CtrlId = @Window:".":Field(CtrlIds, ",", i, 1)
        Handle = Get_Property(CtrlId, "HANDLE")
        Send_Message(Ctrl, "OLE.Subclass", Handle, CtrlId)
        Convert "." to ";" in CtrlId
        Set_Property(Ctrl, "OLE.OptionButton[":CtrlId:"]", 1)
        Set_Property(Ctrl, "OLE.OptionImage[":CtrlId:"]", "BMPS\SRPGit.zip#browse.png")
        Send_Message(Ctrl, "QUALIFY_EVENT", "OLE.OnOptionClick", Yes$)
	Next i	

return


CheckModified:
    
    OrigGenCtrlList = Get_Property(@Window, '@OrigGitCtrlList')
    CurrGenCtrlList = Get_Property(@Window:".CHB_ENABLED", 'CHECK'):@RM:Get_Property(@Window:".EDL_REPO_LOC", 'TEXT'):@RM:Get_Property(@Window:".EDL_GIT_LOC", 'TEXT'):@RM:Get_Property(@Window:".EDL_GUI_LOC", 'TEXT'):@RM:Get_Property(@Window:".EDL_WARNING", 'TEXT')
    If CurrGenCtrlList NE OrigGenCtrlList then
        Set_Property(@Window:'.PUB_APPLY', 'ENABLED', True$)
    end else
        Set_Property(@Window:'.PUB_APPLY', 'ENABLED', False$)
    end
    
return


FillUserSettings:
    
    // Get the settings
    GitEnabled       = SRP_Git_Services("IsEnabled")
    GitRepoLoc       = SRP_Git_Services("GetRepoPath")
    GitExePath       = SRP_Git_Services("GetGitPath")
    GitGUICommand    = SRP_Git_Services("GetGuiCommand")
    GitWarning       = SRP_Git_Services("GetWarning")
    
    // Pass the data to the control
    Set_Property(@Window:".CHB_ENABLED", "CHECK", GitEnabled)
    Set_Property(@Window:".EDL_REPO_LOC", "TEXT", GitRepoLoc)
    Set_Property(@Window:".EDL_GIT_LOC", "TEXT", GitExePath)
    Set_Property(@Window:".EDL_GUI_LOC", "TEXT", GitGUICommand)
    Set_Property(@Window:".EDL_WARNING", "TEXT", GitWarning)
    
    // Save the data so we know when we can apply
    Set_Property(@Window, "@OrigGitCtrlList", GitEnabled:@RM:GitRepoLoc:@RM:GitExePath:@RM:GitWarning)
    Set_Property(@Window:".PUB_APPLY", "ENABLED", False$)
    
return


SaveUserSettings:
    
    GitEnabled        = Get_Property(@Window:".CHB_ENABLED", "CHECK")
    GitRepoLoc        = Get_Property(@Window:".EDL_REPO_LOC", "TEXT")
    GitExePath        = Get_Property(@Window:".EDL_GIT_LOC", "TEXT")
    GitGUICommand     = Get_Property(@Window:".EDL_GUI_LOC", "TEXT")
    GitWarning        = Get_Property(@Window:".EDL_WARNING", "TEXT")
    SRP_Git_Services("SaveUserSettings", GitEnabled, GitRepoLoc, GitExePath, GitGUICommand, GitWarning)
        
    // Save the data so we know when we can apply
    Set_Property(@Window, "@OrigGitCtrlList", GitEnabled:@RM:GitRepoLoc:@RM:GitExePath:@RM:GitGUICommand:@RM:GitWarning)
    Set_Property(@Window:".PUB_APPLY", "ENABLED", False$)
    
return

