diff --git a/CHANGELOG.md b/CHANGELOG.md index 22742cb..cc9b323 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # v0.5.0 +* NewApplication function and Start function of the Application interface were replaced by StartApp function * Added HasFocus function to the View interface * Added the UserAgent function to the Session interface * Added the following properties to TableView: "selection-mode", "allow-selection", "current", "current-style", "current-inactive-style" diff --git a/application.go b/application.go index fb0d3db..39df812 100644 --- a/application.go +++ b/application.go @@ -27,19 +27,24 @@ var defaultThemeText string // Application - app interface type Application interface { - // Start - start the application life cycle - Start(addr string) Finish() nextSessionID() int removeSession(id int) } type application struct { - name, icon string + params AppParams createContentFunc func(Session) SessionContent sessions map[int]Session } +// AppParams defines parameters of the app +type AppParams struct { + Title string + TitleColor Color + Icon string +} + func (app *application) getStartPage() string { buffer := allocStringBuilder() defer freeStringBuilder(buffer) @@ -49,12 +54,19 @@ func (app *application) getStartPage() string { `) - buffer.WriteString(app.name) + buffer.WriteString(app.params.Title) buffer.WriteString("") - if app.icon != "" { + if app.params.Icon != "" { buffer.WriteString(` `) + } + + if app.params.TitleColor != 0 { + buffer.WriteString(` + `) } @@ -78,9 +90,8 @@ func (app *application) getStartPage() string { return buffer.String() } -func (app *application) init(name, icon string) { - app.name = name - app.icon = icon +func (app *application) init(params AppParams) { + app.params = params app.sessions = map[int]Session{} } @@ -277,12 +288,14 @@ func (app *application) startSession(params DataObject, events chan DataObject, return session, answerText } -// NewApplication - create the new application of the single view type. -func NewApplication(name, icon string, createContentFunc func(Session) SessionContent) Application { +// NewApplication - create the new application and start it +func StartApp(addr string, createContentFunc func(Session) SessionContent, params AppParams) { app := new(application) - app.init(name, icon) + app.init(params) app.createContentFunc = createContentFunc - return app + + http.Handle("/", app) + log.Fatal(http.ListenAndServe(addr, nil)) } func OpenBrowser(url string) bool { diff --git a/demo/main.go b/demo/main.go index 82bf668..cef30d1 100644 --- a/demo/main.go +++ b/demo/main.go @@ -113,10 +113,6 @@ func (demo *demoSession) CreateRootView(session rui.Session) rui.View { rui.Set(demo.rootView, "rootTitleButton", rui.ClickEvent, demo.clickMenuButton) demo.showPage(0) - if color, ok := rui.StringToColor("#ffc0ded9"); ok { - session.SetTitleColor(color) - } - return demo.rootView } @@ -158,11 +154,14 @@ func (demo *demoSession) showPage(index int) { func main() { rui.ProtocolInDebugLog = true rui.AddEmbedResources(&resources) - app := rui.NewApplication("RUI demo", "icon.svg", createDemo) //addr := rui.GetLocalIP() + ":8080" addr := "localhost:8000" fmt.Print(addr) rui.OpenBrowser("http://" + addr) - app.Start(addr) + rui.StartApp(addr, createDemo, rui.AppParams{ + Title: "RUI demo", + Icon: "icon.svg", + TitleColor: rui.Color(0xffc0ded9), + }) }