Italian Moduli plugins per la propria applicazione desktop

ivanomonti

Expert
Licensed User
Longtime User
ecco come creare un sistema di moduli aggiuntivi a runtime, dove la base rimane semplice ma con i moduli aggiuntivi (plugins) aumenti le capacità del gestionale,,, nulla di che ma sempre valida :)

diventa semplice ma diventa potente per la vostra app, invece di scrivere tonnellate di codice in unica app create tante app figlia, dove passando dei parametri tale applicazione figlia farà il suo lavoro, se tali parametri non passano applicazione figlia non funzionerà (proteggere il vostro lavoro)


come creare un menu dinamicamente

B4X:
Sub addService(menu As MenuBar)
   
    Dim m1 As Menu
    m1.Initialize("PluIns","")
    m1.Text = "Plug Ins"
    m1.Tag = "plugins"
    m1.MenuItems.Clear

    Dim value As String = File.ListFiles(File.Combine(File.DirApp,"plugins"))
    value = value.Replace("(ArrayList)","").Replace("[","").Replace("]","")
    Dim values() As String = Regex.Split(",",value)

    For i=0 To values.Length-1
        Log(values(i))
        Dim m As Map
        m.Initialize
       
        Dim mi As MenuItem
        mi.Initialize(values(i),"plugins")
        mi.Text = values(i).Replace(".jar","")
        m.Put("kay","plugins")
        m.Put("name",values(i).Replace(".jar",""))
        m.Put("file",values(i).Replace(" ",""))
        m.Put("dir",File.Combine(File.DirApp,"plugins"))
        mi.Tag = m
        m1.MenuItems.Add(mi)
    Next
   
    menu.Menus.Add(m1)
   
End Sub

come aprire il plugins


B4X:
Sub plugins_Action
    Dim shl As Shell
    Dim mi As MenuItem = Sender
    Dim m As Map =  mi.Tag
    shl.Initialize("shl", "java", Array As String("-cp", m.GetValueAt(2), "b4j.example.main", "Ivano Monti"))
    shl.WorkingDirectory = m.GetValueAt(3)
    shl.Run(10000)
End Sub

codice chiusura richiesta menu

B4X:
Sub shl_ProcessCompleted (Success As Boolean, ExitCode As Int, StdOut As String, StdErr As String)
    If Success And ExitCode = 0 Then
        Log("Success")
        Log(StdOut)
    Else
        Log("Error: " & StdErr)
    End If
End Sub


qui manca la regola che è soggettiva a secondo del vostro progetto


2018-04-20_163317.png
 
Last edited:
Top