-
Notifications
You must be signed in to change notification settings - Fork 15
/
FileBrowseLayout.go
39 lines (31 loc) · 1.02 KB
/
FileBrowseLayout.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package main
import (
"github.com/therecipe/qt/widgets"
)
type FileBrowseLayout struct {
*widgets.QHBoxLayout
LineEdit *widgets.QLineEdit
BrowseButton *widgets.QPushButton
}
func (layout *FileBrowseLayout) FileName() string {
return layout.LineEdit.Text()
}
func NewFileBrowseLayout(parent widgets.QWidget_ITF, directory bool, defaultText string, browseTitle string, browseFilter string) *FileBrowseLayout {
layout := &FileBrowseLayout{
QHBoxLayout: widgets.NewQHBoxLayout2(parent),
LineEdit: widgets.NewQLineEdit2(defaultText, nil),
BrowseButton: widgets.NewQPushButton2("Browse...", nil),
}
layout.BrowseButton.ConnectReleased(func() {
var newText string
if directory {
newText = widgets.QFileDialog_GetExistingDirectory(parent, browseTitle, "", 0)
} else {
newText = widgets.QFileDialog_GetOpenFileName(parent, browseTitle, "", browseFilter, "", 0)
}
layout.LineEdit.SetText(newText)
})
layout.AddWidget(layout.LineEdit, 0, 0)
layout.AddWidget(layout.BrowseButton, 0, 0)
return layout
}