Skip to content

Commit

Permalink
Merge branch 'develop' into bugfix/948
Browse files Browse the repository at this point in the history
  • Loading branch information
toaster committed Sep 22, 2020
2 parents 0b06e76 + 3207d86 commit 8a1fa52
Show file tree
Hide file tree
Showing 45 changed files with 1,306 additions and 332 deletions.
1 change: 1 addition & 0 deletions canvas.go
Expand Up @@ -42,6 +42,7 @@ type Canvas interface {
OnTypedKey() func(*KeyEvent)
SetOnTypedKey(func(*KeyEvent))
AddShortcut(shortcut Shortcut, handler func(shortcut Shortcut))
RemoveShortcut(shortcut Shortcut)

Capture() image.Image

Expand Down
8 changes: 7 additions & 1 deletion cmd/fyne/package.go
Expand Up @@ -285,7 +285,13 @@ func (p *packager) packageWindows() error {

vi.Build()
vi.Walk()
err = vi.WriteSyso(outPath, runtime.GOARCH)

arch, ok := os.LookupEnv("GOARCH")
if !ok {
arch = runtime.GOARCH
}

err = vi.WriteSyso(outPath, arch)
if err != nil {
return errors.Wrap(err, "Failed to write .syso file")
}
Expand Down
17 changes: 9 additions & 8 deletions cmd/fyne_demo/main.go
Expand Up @@ -10,6 +10,7 @@ import (
"fyne.io/fyne/canvas"
"fyne.io/fyne/cmd/fyne_demo/data"
"fyne.io/fyne/cmd/fyne_demo/screens"
"fyne.io/fyne/container"
"fyne.io/fyne/layout"
"fyne.io/fyne/theme"
"fyne.io/fyne/widget"
Expand Down Expand Up @@ -114,17 +115,17 @@ func main() {
w.SetMainMenu(mainMenu)
w.SetMaster()

tabs := widget.NewTabContainer(
widget.NewTabItemWithIcon("Welcome", theme.HomeIcon(), welcomeScreen(a)),
widget.NewTabItemWithIcon("Graphics", theme.DocumentCreateIcon(), screens.GraphicsScreen()),
widget.NewTabItemWithIcon("Widgets", theme.CheckButtonCheckedIcon(), screens.WidgetScreen()),
widget.NewTabItemWithIcon("Containers", theme.ViewRestoreIcon(), screens.ContainerScreen()),
widget.NewTabItemWithIcon("Windows", theme.ViewFullScreenIcon(), screens.DialogScreen(w)))
tabs := container.NewAppTabs(
container.NewTabItemWithIcon("Welcome", theme.HomeIcon(), welcomeScreen(a)),
container.NewTabItemWithIcon("Graphics", theme.DocumentCreateIcon(), screens.GraphicsScreen()),
container.NewTabItemWithIcon("Widgets", theme.CheckButtonCheckedIcon(), screens.WidgetScreen()),
container.NewTabItemWithIcon("Containers", theme.ViewRestoreIcon(), screens.ContainerScreen()),
container.NewTabItemWithIcon("Windows", theme.ViewFullScreenIcon(), screens.DialogScreen(w)))

if !fyne.CurrentDevice().IsMobile() {
tabs.Append(widget.NewTabItemWithIcon("Advanced", theme.SettingsIcon(), screens.AdvancedScreen(w)))
tabs.Append(container.NewTabItemWithIcon("Advanced", theme.SettingsIcon(), screens.AdvancedScreen(w)))
}
tabs.SetTabLocation(widget.TabLocationLeading)
tabs.SetTabLocation(container.TabLocationLeading)
tabs.SelectTabIndex(a.Preferences().Int(preferenceCurrentTab))
w.SetContent(tabs)

Expand Down
53 changes: 24 additions & 29 deletions cmd/fyne_demo/screens/container.go
Expand Up @@ -7,23 +7,23 @@ import (

"fyne.io/fyne"
"fyne.io/fyne/canvas"
"fyne.io/fyne/layout"
"fyne.io/fyne/container"
"fyne.io/fyne/theme"
"fyne.io/fyne/widget"
)

// ContainerScreen loads a tab panel for containers and layouts
func ContainerScreen() fyne.CanvasObject {
return widget.NewTabContainer(
widget.NewTabItem("Accordion", makeAccordionTab()),
widget.NewTabItem("Card", makeCardTab()),
widget.NewTabItem("Split", makeSplitTab()),
widget.NewTabItem("Scroll", makeScrollTab()),
return container.NewAppTabs( // TODO not best use of tabs here either
container.NewTabItem("Accordion", makeAccordionTab()),
container.NewTabItem("Card", makeCardTab()),
container.NewTabItem("Split", makeSplitTab()),
container.NewTabItem("Scroll", makeScrollTab()),
// layouts
widget.NewTabItem("Border", makeBorderLayout()),
widget.NewTabItem("Box", makeBoxLayout()),
widget.NewTabItem("Center", makeCenterLayout()),
widget.NewTabItem("Grid", makeGridLayout()),
container.NewTabItem("Border", makeBorderLayout()),
container.NewTabItem("Box", makeBoxLayout()),
container.NewTabItem("Center", makeCenterLayout()),
container.NewTabItem("Grid", makeGridLayout()),
)
}

Expand Down Expand Up @@ -51,9 +51,7 @@ func makeBorderLayout() *fyne.Container {
right := makeCell()
middle := widget.NewLabelWithStyle("BorderLayout", fyne.TextAlignCenter, fyne.TextStyle{})

borderLayout := layout.NewBorderLayout(top, bottom, left, right)
return fyne.NewContainerWithLayout(borderLayout,
top, bottom, left, right, middle)
return container.NewBorder(top, bottom, left, right, middle)
}

func makeBoxLayout() *fyne.Container {
Expand All @@ -63,11 +61,9 @@ func makeBoxLayout() *fyne.Container {
center := makeCell()
right := makeCell()

col := fyne.NewContainerWithLayout(layout.NewVBoxLayout(),
top, middle, bottom)
col := container.NewVBox(top, middle, bottom)

return fyne.NewContainerWithLayout(layout.NewHBoxLayout(),
col, center, right)
return container.NewHBox(col, center, right)
}

func makeButtonList(count int) []fyne.CanvasObject {
Expand All @@ -89,8 +85,8 @@ func makeCardTab() fyne.CanvasObject {
card2.Image = canvas.NewImageFromResource(theme.FyneLogo())
card3 := widget.NewCard("Title 3", "Subtitle", widget.NewCheck("Check me", func(bool) {}))
card4 := widget.NewCard("Title 4", "Another card", widget.NewLabel("Content"))
return fyne.NewContainerWithLayout(layout.NewGridLayout(3), widget.NewVBox(card1, card4),
widget.NewVBox(card2), widget.NewVBox(card3))
return container.NewGridWithColumns(3, container.NewVBox(card1, card4),
container.NewVBox(card2), container.NewVBox(card3))
}

func makeCell() fyne.CanvasObject {
Expand All @@ -102,8 +98,7 @@ func makeCell() fyne.CanvasObject {
func makeCenterLayout() *fyne.Container {
middle := widget.NewButton("CenterLayout", func() {})

return fyne.NewContainerWithLayout(layout.NewCenterLayout(),
middle)
return container.NewCenter(middle)
}

func makeGridLayout() *fyne.Container {
Expand All @@ -112,27 +107,27 @@ func makeGridLayout() *fyne.Container {
box3 := makeCell()
box4 := makeCell()

return fyne.NewContainerWithLayout(layout.NewGridLayout(2),
return container.NewGridWithColumns(2,
box1, box2, box3, box4)
}

func makeScrollTab() fyne.CanvasObject {
hlist := makeButtonList(20)
vlist := makeButtonList(50)

horiz := widget.NewHScrollContainer(widget.NewHBox(hlist...))
vert := widget.NewVScrollContainer(widget.NewVBox(vlist...))
horiz := container.NewHScroll(widget.NewHBox(hlist...))
vert := container.NewVScroll(widget.NewVBox(vlist...))

return fyne.NewContainerWithLayout(layout.NewAdaptiveGridLayout(2),
fyne.NewContainerWithLayout(layout.NewBorderLayout(horiz, nil, nil, nil), horiz, vert),
return container.NewAdaptiveGrid(2,
container.NewBorder(horiz, nil, nil, nil, vert),
makeScrollBothTab())
}

func makeScrollBothTab() fyne.CanvasObject {
logo := canvas.NewImageFromResource(theme.FyneLogo())
logo.SetMinSize(fyne.NewSize(800, 800))

scroll := widget.NewScrollContainer(logo)
scroll := container.NewScroll(logo)
scroll.Resize(fyne.NewSize(400, 400))

return scroll
Expand All @@ -142,9 +137,9 @@ func makeSplitTab() fyne.CanvasObject {
left := widget.NewMultiLineEntry()
left.Wrapping = fyne.TextWrapWord
left.SetText("Long text is looooooooooooooong")
right := widget.NewVSplitContainer(
right := container.NewVSplit(
widget.NewLabel("Label"),
widget.NewButton("Button", func() { fmt.Println("button tapped!") }),
)
return widget.NewHSplitContainer(widget.NewVScrollContainer(left), right)
return container.NewHSplit(container.NewVScroll(left), right)
}
63 changes: 47 additions & 16 deletions cmd/fyne_demo/screens/widget.go
Expand Up @@ -7,6 +7,7 @@ import (
"time"

"fyne.io/fyne"
"fyne.io/fyne/container"
"fyne.io/fyne/data/validation"
"fyne.io/fyne/layout"
"fyne.io/fyne/theme"
Expand All @@ -33,7 +34,7 @@ var (
endProgress chan interface{}
)

func makeButtonTab() fyne.Widget {
func makeButtonTab() fyne.CanvasObject {
disabled := widget.NewButton("Disabled", func() {})
disabled.Disable()

Expand All @@ -47,7 +48,7 @@ func makeButtonTab() fyne.Widget {
shareItem,
))

return widget.NewVBox(
return container.NewVBox(
widget.NewButton("Button (text only)", func() { fmt.Println("tapped text button") }),
widget.NewButtonWithIcon("Button (text & leading icon)", theme.ConfirmIcon(), func() { fmt.Println("tapped text & leading icon button") }),
&widget.Button{
Expand Down Expand Up @@ -101,7 +102,7 @@ func makeTextTab() fyne.CanvasObject {

entryLoremIpsum := widget.NewMultiLineEntry()
entryLoremIpsum.SetText(loremIpsum)
entryLoremIpsumScroller := widget.NewVScrollContainer(entryLoremIpsum)
entryLoremIpsumScroller := container.NewVScroll(entryLoremIpsum)

label.Alignment = fyne.TextAlignLeading
hyperlink.Alignment = fyne.TextAlignLeading
Expand Down Expand Up @@ -155,8 +156,8 @@ func makeTextTab() fyne.CanvasObject {
})
radioWrap.SetSelected("Text Wrapping Word")

fixed := widget.NewVBox(
widget.NewHBox(
fixed := container.NewVBox(
container.NewHBox(
radioAlign,
layout.NewSpacer(),
radioWrap,
Expand All @@ -170,7 +171,7 @@ func makeTextTab() fyne.CanvasObject {
fixed, entryLoremIpsumScroller, grid)
}

func makeInputTab() fyne.Widget {
func makeInputTab() fyne.CanvasObject {
entry := widget.NewEntry()
entry.SetPlaceHolder("Entry")
entryDisabled := widget.NewEntry()
Expand All @@ -189,7 +190,7 @@ func makeInputTab() fyne.Widget {
disabledRadio := widget.NewRadio([]string{"Disabled radio"}, func(string) {})
disabledRadio.Disable()

return widget.NewVBox(
return container.NewVBox(
entry,
entryDisabled,
entryValidated,
Expand All @@ -204,7 +205,7 @@ func makeInputTab() fyne.Widget {
)
}

func makeProgressTab() fyne.Widget {
func makeProgressTab() fyne.CanvasObject {
progress = widget.NewProgressBar()

fprogress = widget.NewProgressBar()
Expand All @@ -215,7 +216,7 @@ func makeProgressTab() fyne.Widget {
infProgress = widget.NewProgressBarInfinite()
endProgress = make(chan interface{}, 1)

return widget.NewVBox(
return container.NewVBox(
widget.NewLabel("Percent"), progress,
widget.NewLabel("Formatted"), fprogress,
widget.NewLabel("Infinite"), infProgress)
Expand Down Expand Up @@ -289,6 +290,35 @@ func stopProgress() {
endProgress <- struct{}{}
}

func makeListTab() fyne.CanvasObject {
var data []string
for i := 0; i < 1000; i++ {
data = append(data, fmt.Sprintf("Test Item %d", i))
}

icon := widget.NewIcon(nil)
label := widget.NewLabel("Select An Item From The List")
hbox := fyne.NewContainerWithLayout(layout.NewHBoxLayout(), icon, label)

list := widget.NewList(
func() int {
return len(data)
},
func() fyne.CanvasObject {
return fyne.NewContainerWithLayout(layout.NewHBoxLayout(), widget.NewIcon(theme.DocumentIcon()), widget.NewLabel("Template Object"))
},
func(index int, item fyne.CanvasObject) {
item.(*fyne.Container).Objects[1].(*widget.Label).SetText(data[index])
},
)
list.OnItemSelected = func(index int) {
label.SetText(data[index])
icon.SetResource(theme.DocumentIcon())
}
split := widget.NewHSplitContainer(list, fyne.NewContainerWithLayout(layout.NewCenterLayout(), hbox))
return fyne.NewContainerWithLayout(layout.NewMaxLayout(), split)
}

// WidgetScreen shows a panel containing widget demos
func WidgetScreen() fyne.CanvasObject {
toolbar := widget.NewToolbar(widget.NewToolbarAction(theme.MailComposeIcon(), func() { fmt.Println("New") }),
Expand All @@ -300,14 +330,15 @@ func WidgetScreen() fyne.CanvasObject {
)

progress := makeProgressTab()
tabs := widget.NewTabContainer(
widget.NewTabItem("Buttons", makeButtonTab()),
widget.NewTabItem("Text", makeTextTab()),
widget.NewTabItem("Input", makeInputTab()),
widget.NewTabItem("Progress", progress),
widget.NewTabItem("Form", makeFormTab()),
tabs := container.NewAppTabs( // TODO move to something better suited to this content
container.NewTabItem("Buttons", makeButtonTab()),
container.NewTabItem("Text", makeTextTab()),
container.NewTabItem("Input", makeInputTab()),
container.NewTabItem("Progress", progress),
container.NewTabItem("Form", makeFormTab()),
container.NewTabItem("List", makeListTab()),
)
tabs.OnChanged = func(t *widget.TabItem) {
tabs.OnChanged = func(t *container.TabItem) {
if t.Content == progress {
startProgress()
} else {
Expand Down

0 comments on commit 8a1fa52

Please sign in to comment.