mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 04:42:00 +08:00
implement opendialog as callback function
This commit is contained in:
parent
3bcddd5b4c
commit
a2d447aecf
@ -202,26 +202,23 @@ void ExecuteOnMainThread(void* f, JSCallback* jscallback) {
|
|||||||
|
|
||||||
void extern processOpenFileResult(char*);
|
void extern processOpenFileResult(char*);
|
||||||
|
|
||||||
static void OpenDialog(GtkWindow* window, char *title) {
|
int opendialog(gpointer data) {
|
||||||
printf("Here\n");
|
struct JSCallback *js = data;
|
||||||
GtkWidget *dlg = gtk_file_chooser_dialog_new(title, window, GTK_FILE_CHOOSER_ACTION_OPEN,
|
GtkWidget *dlg = gtk_file_chooser_dialog_new(js->script, js->webview, GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||||
"_Cancel", GTK_RESPONSE_CANCEL,
|
"_Cancel", GTK_RESPONSE_CANCEL,
|
||||||
"_Open", GTK_RESPONSE_ACCEPT,
|
"_Open", GTK_RESPONSE_ACCEPT,
|
||||||
NULL);
|
NULL);
|
||||||
printf("Here3\n");
|
|
||||||
|
|
||||||
gint response = gtk_dialog_run(GTK_DIALOG(dlg));
|
gint response = gtk_dialog_run(GTK_DIALOG(dlg));
|
||||||
printf("Here 4\n");
|
|
||||||
|
|
||||||
if (response == GTK_RESPONSE_ACCEPT)
|
|
||||||
{
|
|
||||||
printf("Here 5\n");
|
|
||||||
|
|
||||||
|
if (response == GTK_RESPONSE_ACCEPT) {
|
||||||
gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dlg));
|
gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dlg));
|
||||||
processOpenFileResult(filename);
|
processOpenFileResult(filename);
|
||||||
g_free(filename);
|
g_free(filename);
|
||||||
}
|
}
|
||||||
gtk_widget_destroy(dlg);
|
gtk_widget_destroy(dlg);
|
||||||
|
free(js->script);
|
||||||
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
@ -229,7 +226,6 @@ import "C"
|
|||||||
import (
|
import (
|
||||||
"github.com/wailsapp/wails/v2/internal/frontend"
|
"github.com/wailsapp/wails/v2/internal/frontend"
|
||||||
"github.com/wailsapp/wails/v2/pkg/options"
|
"github.com/wailsapp/wails/v2/pkg/options"
|
||||||
"os"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -455,9 +451,10 @@ func (w *Window) Quit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (w *Window) OpenFileDialog(dialogOptions frontend.OpenDialogOptions) {
|
func (w *Window) OpenFileDialog(dialogOptions frontend.OpenDialogOptions) {
|
||||||
println("OpenFileDialog PID:", os.Getpid())
|
data := C.JSCallback{
|
||||||
mem := NewCalloc()
|
webview: w.webview,
|
||||||
title := mem.String(dialogOptions.Title)
|
script: C.CString(dialogOptions.Title),
|
||||||
C.OpenDialog(w.asGTKWindow(), title)
|
}
|
||||||
mem.Free()
|
C.ExecuteOnMainThread(C.opendialog, &data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user