From 6b5e216d4da0818e4803344a91f43d447131c570 Mon Sep 17 00:00:00 2001 From: REDDY PRASAD Date: Thu, 7 Jan 2021 14:13:32 +0530 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20panic=20while=20accessing?= =?UTF-8?q?=20selected=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- widgets/widgets.go | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/widgets/widgets.go b/widgets/widgets.go index e323bbe4..b425d412 100644 --- a/widgets/widgets.go +++ b/widgets/widgets.go @@ -3,11 +3,12 @@ package widgets import ( + "unsafe" + "github.com/therecipe/qt/core" "github.com/therecipe/qt/gui" "github.com/therecipe/qt/internal" "github.com/therecipe/qt/interop/gow" - "unsafe" ) type QAbstractButton struct { @@ -19,6 +20,23 @@ type QAbstractButton_ITF interface { QAbstractButton_PTR() *QAbstractButton } +func interfaceToStringArray(i interface{}) []string { + switch i.(type) { + case interface{}: + return i.([]string) + + case []interface{}: + ifs := i.([]interface{}) + o := []string{} + for _, fn := range ifs { + o = append(o, fn.(string)) + } + return o + default: + panic("expected interface or []interface, but got something else") + } +} + func (ptr *QAbstractButton) QAbstractButton_PTR() *QAbstractButton { return ptr } @@ -13049,12 +13067,12 @@ func (ptr *QFileDialog) GetOpenFileName(parent QWidget_ITF, caption string, dir func QFileDialog_GetOpenFileNames(parent QWidget_ITF, caption string, dir string, filter string, selectedFilter string, options QFileDialog__Option) []string { - return internal.CallLocalFunction([]interface{}{"", "", "widgets.QFileDialog_GetOpenFileNames", "", parent, caption, dir, filter, selectedFilter, options}).([]string) + return interfaceToStringArray(internal.CallLocalFunction([]interface{}{"", "", "widgets.QFileDialog_GetOpenFileNames", "", parent, caption, dir, filter, selectedFilter, options})) } func (ptr *QFileDialog) GetOpenFileNames(parent QWidget_ITF, caption string, dir string, filter string, selectedFilter string, options QFileDialog__Option) []string { - return internal.CallLocalFunction([]interface{}{"", "", "widgets.QFileDialog_GetOpenFileNames", "", parent, caption, dir, filter, selectedFilter, options}).([]string) + return interfaceToStringArray(internal.CallLocalFunction([]interface{}{"", "", "widgets.QFileDialog_GetOpenFileNames", "", parent, caption, dir, filter, selectedFilter, options})) } func QFileDialog_GetOpenFileUrl(parent QWidget_ITF, caption string, dir core.QUrl_ITF, filter string, selectedFilter string, options QFileDialog__Option, supportedSchemes []string) *core.QUrl { @@ -13189,7 +13207,7 @@ func (ptr *QFileDialog) SelectUrl(url core.QUrl_ITF) { func (ptr *QFileDialog) SelectedFiles() []string { - return internal.CallLocalFunction([]interface{}{"", uintptr(ptr.Pointer()), ptr.ClassNameInternalF(), "SelectedFiles"}).([]string) + return interfaceToStringArray(internal.CallLocalFunction([]interface{}{"", uintptr(ptr.Pointer()), ptr.ClassNameInternalF(), "SelectedFiles"})) } func (ptr *QFileDialog) SelectedMimeTypeFilter() string {