Attach (windows).
This commit is contained in:
parent
52eb3aeda1
commit
2bedb36257
10 changed files with 24 additions and 11 deletions
|
@ -33,6 +33,7 @@ func selectColor(opts options) (color.Color, error) {
|
||||||
|
|
||||||
var args _CHOOSECOLOR
|
var args _CHOOSECOLOR
|
||||||
args.StructSize = uint32(unsafe.Sizeof(args))
|
args.StructSize = uint32(unsafe.Sizeof(args))
|
||||||
|
args.Owner, _ = opts.attach.(uintptr)
|
||||||
args.CustColors = &customColors
|
args.CustColors = &customColors
|
||||||
|
|
||||||
if opts.color != nil {
|
if opts.color != nil {
|
||||||
|
|
|
@ -56,11 +56,12 @@ func (dlg *calendarDialog) setup(text string, opts options) (time.Time, error) {
|
||||||
}
|
}
|
||||||
defer unregisterClass.Call(cls, instance)
|
defer unregisterClass.Call(cls, instance)
|
||||||
|
|
||||||
|
owner, _ := opts.attach.(uintptr)
|
||||||
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
||||||
cls, strptr(*opts.title),
|
cls, strptr(*opts.title),
|
||||||
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
||||||
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
||||||
281, 281, 0, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
281, 281, owner, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
||||||
|
|
||||||
dlg.textCtl, _, _ = createWindowEx.Call(0,
|
dlg.textCtl, _, _ = createWindowEx.Call(0,
|
||||||
strptr("STATIC"), strptr(text),
|
strptr("STATIC"), strptr(text),
|
||||||
|
|
|
@ -55,11 +55,12 @@ func (dlg *entryDialog) setup(text string, opts options) (string, error) {
|
||||||
}
|
}
|
||||||
defer unregisterClass.Call(cls, instance)
|
defer unregisterClass.Call(cls, instance)
|
||||||
|
|
||||||
|
owner, _ := opts.attach.(uintptr)
|
||||||
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
||||||
cls, strptr(*opts.title),
|
cls, strptr(*opts.title),
|
||||||
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
||||||
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
||||||
281, 141, 0, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
281, 141, owner, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
||||||
|
|
||||||
dlg.textCtl, _, _ = createWindowEx.Call(0,
|
dlg.textCtl, _, _ = createWindowEx.Call(0,
|
||||||
strptr("STATIC"), strptr(text),
|
strptr("STATIC"), strptr(text),
|
||||||
|
|
|
@ -43,6 +43,7 @@ func selectFile(opts options) (string, error) {
|
||||||
|
|
||||||
var args _OPENFILENAME
|
var args _OPENFILENAME
|
||||||
args.StructSize = uint32(unsafe.Sizeof(args))
|
args.StructSize = uint32(unsafe.Sizeof(args))
|
||||||
|
args.Owner, _ = opts.attach.(uintptr)
|
||||||
args.Flags = _OFN_NOCHANGEDIR | _OFN_FILEMUSTEXIST | _OFN_EXPLORER
|
args.Flags = _OFN_NOCHANGEDIR | _OFN_FILEMUSTEXIST | _OFN_EXPLORER
|
||||||
|
|
||||||
if opts.title != nil {
|
if opts.title != nil {
|
||||||
|
@ -88,6 +89,7 @@ func selectFileMultiple(opts options) ([]string, error) {
|
||||||
|
|
||||||
var args _OPENFILENAME
|
var args _OPENFILENAME
|
||||||
args.StructSize = uint32(unsafe.Sizeof(args))
|
args.StructSize = uint32(unsafe.Sizeof(args))
|
||||||
|
args.Owner, _ = opts.attach.(uintptr)
|
||||||
args.Flags = _OFN_NOCHANGEDIR | _OFN_ALLOWMULTISELECT | _OFN_FILEMUSTEXIST | _OFN_EXPLORER
|
args.Flags = _OFN_NOCHANGEDIR | _OFN_ALLOWMULTISELECT | _OFN_FILEMUSTEXIST | _OFN_EXPLORER
|
||||||
|
|
||||||
if opts.title != nil {
|
if opts.title != nil {
|
||||||
|
@ -158,6 +160,7 @@ func selectFileSave(opts options) (string, error) {
|
||||||
|
|
||||||
var args _OPENFILENAME
|
var args _OPENFILENAME
|
||||||
args.StructSize = uint32(unsafe.Sizeof(args))
|
args.StructSize = uint32(unsafe.Sizeof(args))
|
||||||
|
args.Owner, _ = opts.attach.(uintptr)
|
||||||
args.Flags = _OFN_NOCHANGEDIR | _OFN_PATHMUSTEXIST | _OFN_NOREADONLYRETURN | _OFN_EXPLORER
|
args.Flags = _OFN_NOCHANGEDIR | _OFN_PATHMUSTEXIST | _OFN_NOREADONLYRETURN | _OFN_EXPLORER
|
||||||
|
|
||||||
if opts.title != nil {
|
if opts.title != nil {
|
||||||
|
@ -268,7 +271,8 @@ func pickFolders(opts options, multi bool) (str string, lst []string, err error)
|
||||||
defer unhook()
|
defer unhook()
|
||||||
}
|
}
|
||||||
|
|
||||||
hr, _, _ = dialog.Call(dialog.Show, 0)
|
owner, _ := opts.attach.(uintptr)
|
||||||
|
hr, _, _ = dialog.Call(dialog.Show, owner)
|
||||||
if opts.ctx != nil && opts.ctx.Err() != nil {
|
if opts.ctx != nil && opts.ctx.Err() != nil {
|
||||||
return "", nil, opts.ctx.Err()
|
return "", nil, opts.ctx.Err()
|
||||||
}
|
}
|
||||||
|
@ -328,6 +332,7 @@ func pickFolders(opts options, multi bool) (str string, lst []string, err error)
|
||||||
|
|
||||||
func browseForFolder(opts options) (string, []string, error) {
|
func browseForFolder(opts options) (string, []string, error) {
|
||||||
var args _BROWSEINFO
|
var args _BROWSEINFO
|
||||||
|
args.Owner, _ = opts.attach.(uintptr)
|
||||||
args.Flags = 0x1 // BIF_RETURNONLYFSDIRS
|
args.Flags = 0x1 // BIF_RETURNONLYFSDIRS
|
||||||
|
|
||||||
if opts.title != nil {
|
if opts.title != nil {
|
||||||
|
|
|
@ -72,11 +72,12 @@ func (dlg *listDialog) setup(text string, opts options) ([]string, error) {
|
||||||
}
|
}
|
||||||
defer unregisterClass.Call(cls, instance)
|
defer unregisterClass.Call(cls, instance)
|
||||||
|
|
||||||
|
owner, _ := opts.attach.(uintptr)
|
||||||
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
||||||
cls, strptr(*opts.title),
|
cls, strptr(*opts.title),
|
||||||
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
||||||
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
||||||
281, 281, 0, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
281, 281, owner, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
||||||
|
|
||||||
dlg.textCtl, _, _ = createWindowEx.Call(0,
|
dlg.textCtl, _, _ = createWindowEx.Call(0,
|
||||||
strptr("STATIC"), strptr(text),
|
strptr("STATIC"), strptr(text),
|
||||||
|
|
|
@ -70,7 +70,8 @@ func message(kind messageKind, text string, opts options) error {
|
||||||
title = syscall.StringToUTF16Ptr(*opts.title)
|
title = syscall.StringToUTF16Ptr(*opts.title)
|
||||||
}
|
}
|
||||||
|
|
||||||
s, _, err := messageBox.Call(0, strptr(text), uintptr(unsafe.Pointer(title)), flags)
|
owner, _ := opts.attach.(uintptr)
|
||||||
|
s, _, err := messageBox.Call(owner, strptr(text), uintptr(unsafe.Pointer(title)), flags)
|
||||||
|
|
||||||
if opts.ctx != nil && opts.ctx.Err() != nil {
|
if opts.ctx != nil && opts.ctx.Err() != nil {
|
||||||
return opts.ctx.Err()
|
return opts.ctx.Err()
|
||||||
|
|
|
@ -135,11 +135,12 @@ func (dlg *progressDialog) setup(opts options) error {
|
||||||
}
|
}
|
||||||
defer unregisterClass.Call(cls, instance)
|
defer unregisterClass.Call(cls, instance)
|
||||||
|
|
||||||
|
owner, _ := opts.attach.(uintptr)
|
||||||
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
||||||
cls, strptr(*opts.title),
|
cls, strptr(*opts.title),
|
||||||
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
||||||
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
||||||
281, 133, 0, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
281, 133, owner, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
||||||
|
|
||||||
dlg.textCtl, _, _ = createWindowEx.Call(0,
|
dlg.textCtl, _, _ = createWindowEx.Call(0,
|
||||||
strptr("STATIC"), 0,
|
strptr("STATIC"), 0,
|
||||||
|
|
|
@ -65,11 +65,12 @@ func (dlg *passwordDialog) setup(opts options) (string, string, error) {
|
||||||
}
|
}
|
||||||
defer unregisterClass.Call(cls, instance)
|
defer unregisterClass.Call(cls, instance)
|
||||||
|
|
||||||
|
owner, _ := opts.attach.(uintptr)
|
||||||
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
dlg.wnd, _, _ = createWindowEx.Call(_WS_EX_CONTROLPARENT|_WS_EX_WINDOWEDGE|_WS_EX_DLGMODALFRAME,
|
||||||
cls, strptr(*opts.title),
|
cls, strptr(*opts.title),
|
||||||
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
_WS_POPUPWINDOW|_WS_CLIPSIBLINGS|_WS_DLGFRAME,
|
||||||
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
_CW_USEDEFAULT, _CW_USEDEFAULT,
|
||||||
281, 191, 0, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
281, 191, owner, 0, instance, uintptr(unsafe.Pointer(dlg)))
|
||||||
|
|
||||||
dlg.uTextCtl, _, _ = createWindowEx.Call(0,
|
dlg.uTextCtl, _, _ = createWindowEx.Call(0,
|
||||||
strptr("STATIC"), strptr("Username:"),
|
strptr("STATIC"), strptr("Username:"),
|
||||||
|
|
|
@ -4,7 +4,6 @@ package zenity
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -16,8 +15,8 @@ func appendGeneral(args []string, opts options) []string {
|
||||||
if opts.title != nil {
|
if opts.title != nil {
|
||||||
args = append(args, "--title", *opts.title)
|
args = append(args, "--title", *opts.title)
|
||||||
}
|
}
|
||||||
if opts.attach != nil {
|
if id, ok := opts.attach.(int); ok {
|
||||||
args = append(args, "--attach", fmt.Sprint(opts.attach))
|
args = append(args, "--attach", strconv.Itoa(id))
|
||||||
}
|
}
|
||||||
if opts.modal {
|
if opts.modal {
|
||||||
args = append(args, "--modal")
|
args = append(args, "--modal")
|
||||||
|
|
|
@ -214,7 +214,9 @@ func Attach(id any) Option {
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if _, ok := id.(int); !ok {
|
switch id.(type) {
|
||||||
|
case int:
|
||||||
|
default:
|
||||||
panic("interface conversion: expected int")
|
panic("interface conversion: expected int")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue