Code archives/Miscellaneous/fmc.Requester
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Since 2006-11-06 my modules stored in the code archives are out of synchronization. To have the latest version you need to use the bmk/syncmods utility or the MaxIDE. You need to add "webspace100.we.funpic.de/root/mod" as a new line to "cfg/modservers.cfg" in your BlitzMax installation directory. You can't synchronize with the default BlitzMax 1.22 IDE. If you don't have another IDE, you need to download a tweaked MaxIDE. You need to specify "fmc" as additional module scope. Alternative you can synchronize with the bmk tool: bmk syncmods fmc For a better description see my thread in the programming forum introducing these modules. | |||||
Strict Module fmc.Requester ?Win32 ModuleInfo "Version: 0.01" ModuleInfo "Modserver: Fabian" Import brl.system Import fmc.Development Import fmc.ObjectTool Type TThreadContext Field Thread:TThread Method Start ( ) If Not Thread Thread = TThread.Create ( Func , OpenHandle ( Self ) ) EndIf EndMethod Method Run ( ) Abstract Method Finish ( ) Abstract EndType Type TNotify Extends TThreadContext Field Text$ Field Serious Field Func ( Data , Context:Object , O:TNotify ) Field Context:Object Field Data Function Create:TNotify ( Text$ , Serious = False , Func ( Data , Context:Object , O:TNotify ) = NotifyFunc , Context:Object = Null ) Local O:TNotify = New TNotify O.Text = Text O.Serious = Serious O.Func = Func O.Context = Context O.Start Return O EndFunction Method Run ( ) Data = bbSystemNotify ( Text , Serious ) EndMethod Method Finish ( ) If Func Func Data , Context , Self EndIf EndMethod EndType Function NotifyFunc ( Data , Context:Object , O:TNotify ) TEvent.Create ( EVENT_GADGETDONE , O , Data ).Emit EndFunction Type TConfirm Extends TThreadContext Field Text$ Field Serious Field Func ( Data , Context:Object , O:TConfirm ) Field Context:Object Field Data Function Create:TConfirm ( Text$ , Serious = False , Func ( Data , Context:Object , O:TConfirm ) = ConfirmFunc , Context:Object = Null ) Local O:TConfirm = New TConfirm O.Text = Text O.Serious = Serious O.Func = Func O.Context = Context O.Start Return O EndFunction Method Run ( ) Data = bbSystemConfirm ( Text , Serious ) EndMethod Method Finish ( ) If Func Func Data , Context , Self EndIf EndMethod EndType Function ConfirmFunc ( Data , Context:Object , O:TConfirm ) TEvent.Create ( EVENT_GADGETDONE , O , Data ).Emit EndFunction Type TProceed Extends TThreadContext Field Text$ Field Serious Field Func ( Data , Context:Object , O:TProceed ) Field Context:Object Field Data Function Create:TProceed ( Text$ , Serious = False , Func ( Data , Context:Object , O:TProceed ) = ProceedFunc , Context:Object = Null ) Local O:TProceed = New TProceed O.Text = Text O.Serious = Serious O.Func = Func O.Context = Context O.Start Return O EndFunction Method Run ( ) Data = bbSystemProceed ( Text , Serious ) EndMethod Method Finish ( ) If Func Func Data , Context , Self EndIf EndMethod EndType Function ProceedFunc ( Data , Context:Object , O:TProceed ) TEvent.Create ( EVENT_GADGETDONE , O , Data ).Emit EndFunction Rem Type TRequestFile Extends TThreadContext Field Text$ Field Exts$ Field Save Field File$ Field Dir$ Field Buf:Byte [] Field Func ( Data$ , Context:Object , O:TRequestFile ) Field Context:Object Field Data Function Create:TRequestFile ( Text$ , Extensions$ = "" , Save_Flag = False , Initial_Path$ = "" , Func ( Data$ , Context:Object , O:TRequestFile ) = RequestFileFunc , Context:Object = Null ) Local O:TRequestFile = New TRequestFile O.Text = Text If Extensions If Extensions.Find ( ":" ) = -1 O.Exts = "Files~0*." + Extensions Else O.Exts = Extensions.Replace ( ":" , "~0*." ) EndIf O.Exts = O.Exts.Replace ( ";" , "~0" ) O.Exts = O.Exts.Replace ( "," , ";*." ) + "~0" EndIf O.Save = Save_Flag Initial_Path = Initial_Path.Replace ( "/" , "\" ) Local I = Initial_Path.FindLast ( "\" ) If I <> -1 O.Dir = Initial_Path [.. I ] O.File = Initial_Path [ I + 1 ..] Else O.File = Initial_Path EndIf O.Buf = New Byte [ 4096 ] O.Func = Func O.Context = Context O.Start Return O EndFunction Method Run ( ) Data = bbSystemRequestFile ( Text , Exts , DefExt , Save , File , Dir , Buf , Len Buf ) EndMethod Method Finish ( ) If Func If Data Func String.FromCString ( Buf ) , Context , Self Else Func "" , Context , Self EndIf EndIf EndMethod EndType Function RequestFileFunc ( Data$ , Context:Object , O:TRequestFile ) TEvent.Create ( EVENT_GADGETDONE , O , 0 , 0 , 0 , 0 , Data ).Emit EndFunction EndRem Type TRequestDir Extends TThreadContext Field Text$ Field Dir$ Field Buf:Byte [] Field Func ( Data$ , Context:Object , O:TRequestDir ) Field Context:Object Field Data Function Create:TRequestDir ( Text$ , Initial_Path$ = "" , Func ( Data$ , Context:Object , O:TRequestDir ) = RequestDirFunc , Context:Object = Null ) Local O:TRequestDir = New TRequestDir O.Text = Text O.Dir = Initial_Path.Replace ( "/" , "\" ) O.Buf = New Byte [ 4096 ] O.Func = Func O.Context = Context O.Start Return O EndFunction Method Run ( ) Data = bbSystemRequestDir ( Text , Dir , Buf , Len Buf ) EndMethod Method Finish ( ) If Func If Data Func String.FromCString ( Buf ) , Context , Self Else Func "" , Context , Self EndIf EndIf EndMethod EndType Function RequestDirFunc ( Data$ , Context:Object , O:TRequestDir ) TEvent.Create ( EVENT_GADGETDONE , O , 0 , 0 , 0 , 0 , Data ).Emit EndFunction Private Function Func ( Context ) TThreadContext ( ObjectForHandle ( Context ) ).Run CallbackMain Proc , Context EndFunction Function Proc ( Context ) Local T:TThreadContext = TThreadContext ( ObjectForHandle ( Context ) ) T.Finish CloseHandle Context T.Thread = Null EndFunction ? |
Comments
None.
Code Archives Forum