mirror of
https://github.com/clockworkpi/LauncherGoDev.git
synced 2026-03-19 18:32:49 +01:00
continue tomorrow
This commit is contained in:
@@ -1,15 +1,23 @@
|
||||
package UI
|
||||
|
||||
import (
|
||||
"plugin"
|
||||
)
|
||||
var PluginPool = NewPluginPool()
|
||||
|
||||
type PluginInterface {
|
||||
Name() string
|
||||
Init(screen *MainScreen)
|
||||
Run(screen *MainScreen)
|
||||
}
|
||||
|
||||
type Plugin struct {
|
||||
|
||||
Name string // only ID for plugin
|
||||
}
|
||||
|
||||
func (self *Plugin) Name() string {
|
||||
return self.Name
|
||||
}
|
||||
|
||||
func (self *Plugin) Init( screen *MainScreen) {
|
||||
|
||||
@@ -19,3 +27,59 @@ func (self *Plugin) Init( screen *MainScreen) {
|
||||
func (self *Plugin) Run( screen *MainScreen) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
func NewPluginPool() map[string]PluginInterface {
|
||||
pp :=make( map[string]PluginInterface )
|
||||
return pp
|
||||
}
|
||||
|
||||
func PluginPoolRegister( pi PluginInterface ) bool {
|
||||
name := pi.Name()
|
||||
|
||||
if _,ok := PluginPool[name]; ok {
|
||||
return false
|
||||
}
|
||||
|
||||
PluginPool[name] = pi
|
||||
}
|
||||
|
||||
func LoadPlugin( pname string) (*plugin.Plugin,error) {
|
||||
return plugin.Load(pname)
|
||||
}
|
||||
|
||||
func InitPlugin(p *plugin.Plugin, main_screen *MainScreen) {
|
||||
symAPI,err := p.Lookup("APIOBJ")
|
||||
|
||||
if err!= nil {
|
||||
log.Fatal( "init plugin failed")
|
||||
return
|
||||
}
|
||||
|
||||
var pi PluginInterface
|
||||
pi,ok := symAPI.(PluginInterface)
|
||||
if !ok {
|
||||
log.Fatal("unexpected type from module symbol")
|
||||
return
|
||||
}
|
||||
|
||||
pi.Init(main_screen)
|
||||
}
|
||||
|
||||
func RunPlugin(p *plugin.Plugin, main_screen *MainScreen) {
|
||||
symAPI,err := p.Lookup("APIOBJ")
|
||||
|
||||
if err!= nil {
|
||||
log.Fatal( "init plugin failed")
|
||||
return
|
||||
}
|
||||
|
||||
var pi PluginInterface
|
||||
pi,ok := symAPI.(PluginInterface)
|
||||
if !ok {
|
||||
log.Fatal("unexpected type from module symbol")
|
||||
return
|
||||
}
|
||||
pi.Run(main_screen)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user