From b1247d2d0d51108c910a73891ff3116e5f032ab1 Mon Sep 17 00:00:00 2001 From: "Kali Kaneko (leap communications)" Date: Sat, 12 Jan 2019 18:39:45 +0100 Subject: [pkg] all your deps are vendored to us --- vendor/0xacab.org/leap/go-dialog/dlgs_linux.go | 122 +++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 vendor/0xacab.org/leap/go-dialog/dlgs_linux.go (limited to 'vendor/0xacab.org/leap/go-dialog/dlgs_linux.go') diff --git a/vendor/0xacab.org/leap/go-dialog/dlgs_linux.go b/vendor/0xacab.org/leap/go-dialog/dlgs_linux.go new file mode 100644 index 0000000..ea8ac3d --- /dev/null +++ b/vendor/0xacab.org/leap/go-dialog/dlgs_linux.go @@ -0,0 +1,122 @@ +package dialog + +import ( + "os" + "path/filepath" + + "github.com/gotk3/gotk3/gdk" + "github.com/gotk3/gotk3/glib" + "github.com/gotk3/gotk3/gtk" +) + +func closeDialog(dlg *gtk.Dialog) { + dlg.Destroy() +} + +func (b *MsgBuilder) yesNo() bool { + ch := make(chan bool) + _, err := glib.IdleAdd(b._yesNo, ch) + if err != nil { + return false + } + return <-ch +} + +func (b *MsgBuilder) _yesNo(ch chan bool) bool { + dlg := gtk.MessageDialogNew(nil, 0, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, "%s", b.Msg) + dlg.SetTitle(firstOf(b.Dlg.Title, "Confirm?")) + b.setIcon(dlg) + defer closeDialog(&dlg.Dialog) + ch <- dlg.Run() == gtk.RESPONSE_YES + return false +} + +func (b *MsgBuilder) info() { + ch := make(chan bool) + glib.IdleAdd(b._info, ch) + <-ch +} + +func (b *MsgBuilder) _info(ch chan bool) { + dlg := gtk.MessageDialogNew(nil, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "%s", b.Msg) + dlg.SetTitle(firstOf(b.Dlg.Title, "Information")) + b.setIcon(dlg) + defer closeDialog(&dlg.Dialog) + dlg.Run() + ch <- true +} + +func (b *MsgBuilder) error() { + ch := make(chan bool) + glib.IdleAdd(b._info, ch) + <-ch +} + +func (b *MsgBuilder) _error() { + dlg := gtk.MessageDialogNew(nil, 0, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "%s", b.Msg) + dlg.SetTitle(firstOf(b.Dlg.Title, "Error")) + b.setIcon(dlg) + defer closeDialog(&dlg.Dialog) + dlg.Run() +} + +func (b *MsgBuilder) setIcon(dlg *gtk.MessageDialog) { + if b.IconPath == "" { + return + } + + pixbuf, err := gdk.PixbufNewFromFile(b.IconPath) + if err != nil { + return + } + dlg.SetIcon(pixbuf) +} + +func (b *FileBuilder) load() (string, error) { + return chooseFile("Load", gtk.FILE_CHOOSER_ACTION_OPEN, b) +} + +func (b *FileBuilder) save() (string, error) { + f, err := chooseFile("Save", gtk.FILE_CHOOSER_ACTION_SAVE, b) + if err != nil { + return "", err + } + _, err = os.Stat(f) + if !os.IsNotExist(err) && !Message("%s already exists, overwrite?", filepath.Base(f)).yesNo() { + return "", Cancelled + } + return f, nil +} + +func chooseFile(title string, action gtk.FileChooserAction, b *FileBuilder) (string, error) { + dlg, err := gtk.FileChooserDialogNewWith2Buttons(firstOf(b.Dlg.Title, title), nil, action, "Ok", gtk.RESPONSE_ACCEPT, "Cancel", gtk.RESPONSE_CANCEL) + if err != nil { + return "", err + } + + for _, filt := range b.Filters { + filter, err := gtk.FileFilterNew() + if err != nil { + return "", err + } + + filter.SetName(filt.Desc) + for _, ext := range filt.Extensions { + filter.AddPattern("*." + ext) + } + dlg.AddFilter(filter) + } + if b.StartDir != "" { + dlg.SetCurrentFolder(b.StartDir) + } + r := dlg.Run() + defer closeDialog(&dlg.Dialog) + if r == gtk.RESPONSE_ACCEPT { + return dlg.GetFilename(), nil + } + return "", Cancelled +} + +func (b *DirectoryBuilder) browse() (string, error) { + return chooseFile("Open Directory", gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, &FileBuilder{Dlg: b.Dlg}) +} -- cgit v1.2.3