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),
+ })
}