2014-12-15 18:16:41 -05:00
|
|
|
USING: alien.c-types alien.data alien.strings alien.syntax
|
|
|
|
destructors file-picker gobject-introspection.standard-types
|
|
|
|
gtk.ffi io.encodings.string io.encodings.utf8 kernel system ;
|
|
|
|
IN: file-picker.linux
|
|
|
|
|
|
|
|
<PRIVATE
|
|
|
|
|
|
|
|
LIBRARY: gtk
|
|
|
|
|
|
|
|
FUNCTION: GtkWidget* gtk_file_chooser_dialog_new (
|
|
|
|
gchar* title,
|
|
|
|
GtkWindow* parent,
|
|
|
|
GtkFileChooserAction action,
|
|
|
|
gchar* first_button_text,
|
|
|
|
gint* first_button_response,
|
|
|
|
gchar* second_button_text,
|
|
|
|
gint* second_button_response,
|
2015-07-19 19:54:27 -04:00
|
|
|
void* sentinel )
|
2014-12-15 18:16:41 -05:00
|
|
|
|
|
|
|
: <gtk-file-chooser-dialog> ( title action -- dialog )
|
|
|
|
[
|
|
|
|
utf8 encode
|
|
|
|
f
|
|
|
|
GTK_FILE_CHOOSER_ACTION_OPEN
|
|
|
|
"Cancel" utf8 encode
|
2015-10-21 19:57:45 -04:00
|
|
|
GTK_RESPONSE_CANCEL gint <ref>
|
2014-12-15 18:16:41 -05:00
|
|
|
] [
|
|
|
|
utf8 encode
|
2015-10-21 19:57:45 -04:00
|
|
|
GTK_RESPONSE_ACCEPT gint <ref>
|
2014-12-15 18:16:41 -05:00
|
|
|
f
|
|
|
|
gtk_file_chooser_dialog_new
|
|
|
|
>k_widget_destroy
|
|
|
|
] bi* ;
|
|
|
|
|
|
|
|
: run-and-get-filename ( dialog -- path/f )
|
|
|
|
dup gtk_dialog_run GTK_RESPONSE_ACCEPT = [
|
|
|
|
gtk_file_chooser_get_filename alien>native-string
|
|
|
|
] [
|
|
|
|
drop f
|
|
|
|
] if ;
|
|
|
|
|
|
|
|
PRIVATE>
|
|
|
|
|
|
|
|
M: linux open-file-dialog
|
|
|
|
[
|
|
|
|
"Open File" "Open" <gtk-file-chooser-dialog>
|
|
|
|
run-and-get-filename
|
|
|
|
] with-destructors ;
|
|
|
|
|
|
|
|
M: linux save-file-dialog
|
|
|
|
[
|
|
|
|
"Save File" "Save" <gtk-file-chooser-dialog>
|
|
|
|
dup t gtk_file_chooser_set_do_overwrite_confirmation
|
|
|
|
dup rot gtk_file_chooser_set_filename drop
|
|
|
|
run-and-get-filename
|
|
|
|
] with-destructors ;
|