[bb] OSALib by boomboom [ 1+ years ago ]

Started by BlitzBot, June 29, 2017, 00:28:40

Previous topic - Next topic

BlitzBot

Title : OSALib
Author : boomboom
Posted : 1+ years ago

Description : This small library just simply acts as an easy way to take advantage of the OSAKit Pro features <a href="http://www.osakit.com./" target="_blank">http://www.osakit.com.</a> If anyone makes any changes for the better or finds any bugs then please repost it :)

If anyone has any comments on my coding style then I would love to hear them :)


Code :
Code (blitzbasic) Select
;- OSA KIT LIBRARY -------------------------------------------------------
;-------------------------------------------------------------------------
;Communication library for OSA Kit (http://www.osakit.com/).
;By Chris 'boomboom' Bate (me@chrisbate.com).
;Version 1.21
;
;Use the Public Functions
;Put the Update Function in your main loop, with your application title as the string.
;Currently suports 1 download (another download request will overwrite the last)
;Doesn't Support browser communication scripts
;
;Uses User32.decls
;
;If you make it better please rerelease it, or email it to me at the address above :)

;Public
Function OSA_Download(URL$)

If URL <> "" Then
OSA_DownloadingURL = URL
OSA_DownloadPercent = 0
OSA_DownloadingSomething = True
OSA_DownloadStalledTimer = 0
OSA_DownloadStalledLastPercent = 0
OSA_CreateOutgoingMessage("DOWNLOAD",URL)
Else
RuntimeError "OSA_Download | File not found on server"
End If

End Function
Function OSA_GetPercent%()

Return OSA_DownloadPercent

End Function
Function OSA_GetDownloadLocation$()

;Local Variables -----
Local Location$
;---------------------

If OSA_DownloadLocation <> ""
;Reset Variables
OSA_DownloadingSomething = False
OSA_DownloadingURL =""
Location = OSA_DownloadLocation
OSA_DownloadLocation = ""
Return Location
Else
Return ""
End If

End Function
Function OSA_Browse(URL$)

If URL <> "" Then
OSA_CreateOutgoingMessage("BROWSE",URL)
Else
RuntimeError "OSA_Browse| Please Enter Valid URL"
End If

End Function
Function OSA_BrowseNew(URL$)

If URL <> "" Then
OSA_CreateOutgoingMessage("BROWSENEW",URL)
Else
RuntimeError "OSA_Browse| Please Enter Valid URL"
End If

End Function
Function OSA_EmbedMe()

OSA_CreateOutgoingMessage("EMBEDME")

End Function
Function OSA_ReleaseMe()

OSA_CreateOutgoingMessage("RELEASEME")

End Function
Function OSA_ShowMe()

OSA_CreateOutgoingMessage("SHOWME")

End Function
Function OSA_HideMe()

OSA_CreateOutgoingMessage("HIDEME")

End Function

Function OSA_UpdateOSA(NormalAppTitle$)

;Local Variables -----
Local tOSA_System.OSA_System ;Define OSA_System
Local tMsgOut.OSA_OutgoingMessage ;Define Outgoing Message Type
Local InMessage$
Local OutMessage$
;---------------------

;Gather Message & Reset
InMessage = OSA_GetWindowText() : OSA_SetWindowText(NormalAppTitle)

;Return OSA_System Type
tOSA_System.OSA_System = First OSA_System

;Make if Null
If tOSA_System = Null And InMessage <> NormalAppTitle Then
tOSA_System = New OSA_System
tOSA_SystemID = Handle(tOSA_System)
tOSA_SystemDefaultAppTitle = NormalAppTitle
tOSA_SystemOSAhwnd = Int(InMessage)
End If

;Use if not Null
If tOSA_System <> Null

;INCOMING
Select OSA_ParseMessageCommand(InMessage)

Case "DOWNLOADED"
OSA_DownloadLocation$ = OSA_ParseMessageParameter(InMessage)

Case "PERCENT"
OSA_DownloadPercent = Int(OSA_ParseMessageParameter(InMessage))

End Select

;OUTGOING
tMsgOut = First OSA_OutgoingMessage
If tMsgOut <> Null

;Process Outgoing Message
OutMessage = tMsgOutCommand
If tMsgOutParameter <> "" Then OutMessage = OutMessage + "|" + tMsgOutParameter

;Send Message
OSA_SetWindowText(OutMessage,tOSA_SystemOSAhwnd)

;Remove Message
Delete tMsgOut

Else

;Message System Idle? Update Checks
If OSA_DelayedCheck > 20 Then

;Updates File Download Percentage
If OSA_DownloadingSomething = True Then OSA_CreateOutgoingMessage("GETPERCENT")

;Forces Destroy if OSAKit Destruction
If api_IsWindow(tOSA_SystemOSAhwnd) = False End

OSA_DelayedCheck = 0
Else
OSA_DelayedCheck = OSA_DelayedCheck + 1
End If

;Download Stalled? Restart Download
If OSA_DownloadingSomething = True
If OSA_DownloadStalledTimer = 150

If OSA_GetPercent() = OSA_DownloadStalledLastPercent Then OSA_Download(OSA_DownloadingURL)
If OSA_GetPercent() > OSA_DownloadStalledLastPercent Then OSA_DownloadStalledLastPercent = OSA_GetPercent()

OSA_DownloadStalledTimer = 0
Else
OSA_DownloadStalledTimer = OSA_DownloadStalledTimer + 1
End If
End If

End If

End If

End Function

;Private
Global OSA_DownloadingURL$
Global OSA_DownloadPercent%
Global OSA_DelayedCheck%
Global OSA_DownloadLocation$
Global OSA_DownloadingSomething%

Global OSA_DownloadStalledTimer%
Global OSA_DownloadStalledLastPercent%

Type OSA_System

Field ID%

Field DefaultAppTitle$
Field OSAhwnd%

End Type
Type OSA_OutgoingMessage

Field ID%

Field Command$
Field Parameter$

End Type

Function OSA_GetWindowText$(hwnd%=0)

;Local Variables -----
Local MessageBank% ;Bank for incoming data
Local length% ;Length of message (how many characters)
Local i% ;Standard loop varible
Local InMessage$ ;Message as string
;---------------------

If hwnd = 0 Then hwnd = SystemProperty("AppHWND")

MessageBank = CreateBank(254)

length = api_GetWindowText(hwnd,MessageBank,254)

If length <> 0 Then

For i = 0 To length - 1
InMessage = InMessage + Chr((PeekByte(MessageBank,i)))
Next

FreeBank MessageBank

Return InMessage

End If

End Function
Function OSA_SetWindowText(OutMessage$,hwnd%=0)

If hwnd = 0 Then hwnd = SystemProperty("AppHWND")

api_SetWindowText(hwnd%, OutMessage$)

End Function
Function OSA_CreateOutgoingMessage%(Command$,Parameter$="")

;Local Variables -----
Local tMsgOut.OSA_OutgoingMessage ;Define Outgoing Message Type
;---------------------

tMsgOut = New OSA_OutgoingMessage
tMsgOutID = Handle(tMsgOut)
tMsgOutCommand = Command
tMsgOutParameter = Parameter

Return tMsgOutID

End Function
Function OSA_ParseMessageCommand$(Msg$)

;Local Variables -----
Local i% ;Standard loop variable.
Local Current$ ;Current character being parsed.
;---------------------

For i = 1 To Len(Msg)
Current = Mid(Msg,i,1)
If Current = "|" Then Return Left(Msg,i-1)
Next

End Function
Function OSA_ParseMessageParameter$(Msg$)

;Local Variables -----
Local i% ;Standard loop variable.
Local Current$ ;Current character being parsed.
;---------------------

For i = 1 To Len(Msg)
Current=Mid(Msg,i,1)
If Current="|" Then Return Mid(Msg,i+1,Len(Msg))
Next

End Function
;=========================================================================
;=========================================================================


Comments :


Sphinx(Posted 1+ years ago)

 Thanks for sharing that Chris :)Oh and thanks for Ro too ;)


sphinx

Kind regards,
Maher F. Farag
www.ancientsoft.com
www.osakit.com