file chooser (WIP).

This commit is contained in:
Miroslav Šedivý 2021-01-18 22:01:11 +01:00
parent b49ed65a5c
commit 22d31e871c
2 changed files with 59 additions and 0 deletions

View File

@ -1,9 +1,52 @@
package desktop
import (
"time"
"os/exec"
)
var (
file_chooser_dialog_open = false
)
func (manager *DesktopManagerCtx) fileChooserDialogStart() {
if manager.IsFileChooserDialogOpen() {
manager.CloseFileChooserDialog()
}
manager.OnWindowCreated(func(window uint32, name string, role string) {
if role != "GtkFileChooserDialog" {
return
}
// TODO: Implement, call event.
file_chooser_dialog_open = true
manager.logger.Debug().
Uint32("window", window).
Msg("GtkFileChooserDialog has been opened")
})
manager.OnWindowConfigured(func(window uint32, name string, role string) {
if role != "GtkFileChooserDialog" {
return
}
go func(){
// TOOD: Refactor.
manager.PutWindowBelow(window)
// Because first dialog is not put properly to background
time.Sleep(500 * time.Millisecond)
manager.PutWindowBelow(window)
}()
manager.logger.Debug().
Uint32("window", window).
Msg("GtkFileChooserDialog has been put below main window")
})
}
func (manager *DesktopManagerCtx) HandleFileChooserDialog(uri string) error {
mu.Lock()
defer mu.Unlock()
@ -23,6 +66,9 @@ func (manager *DesktopManagerCtx) HandleFileChooserDialog(uri string) error {
"sleep", "0.3",
)
// TODO: Implement, call event.
file_chooser_dialog_open = false
_, err := cmd.Output()
return err
}
@ -40,6 +86,8 @@ func (manager *DesktopManagerCtx) CloseFileChooserDialog() bool {
mu.Unlock()
if !manager.IsFileChooserDialogOpen() {
// TODO: Implement, call event.
file_chooser_dialog_open = false
return true
}
}

View File

@ -53,6 +53,17 @@ func (manager *DesktopManagerCtx) Start() {
go xevent.EventLoop(manager.display)
go manager.fileChooserDialogStart()
manager.OnEventError(func(error_code uint8, message string, request_code uint8, minor_code uint8) {
manager.logger.Warn().
Uint8("error_code", error_code).
Str("message", message).
Uint8("request_code", request_code).
Uint8("minor_code", minor_code).
Msg("X event error occured")
})
go func() {
defer func() {
xorg.DisplayClose()