diff options
author | Camil Staps | 2019-10-30 19:45:59 +0100 |
---|---|---|
committer | Camil Staps | 2019-10-30 19:45:59 +0100 |
commit | 6eb82f6660f402f64049c0aa8dab6734b05dbf43 (patch) | |
tree | a551643e81d7d93b326e1e4f5aeea779a09d18d8 /src/Gtk | |
parent | Export all derived strictness (diff) |
Add GtkEntryCompletion
Diffstat (limited to 'src/Gtk')
-rw-r--r-- | src/Gtk/Internal.dcl | 7 | ||||
-rw-r--r-- | src/Gtk/Internal.icl | 30 | ||||
-rw-r--r-- | src/Gtk/Types.dcl | 6 | ||||
-rw-r--r-- | src/Gtk/Widgets.dcl | 21 | ||||
-rw-r--r-- | src/Gtk/Widgets.icl | 33 |
5 files changed, 91 insertions, 6 deletions
diff --git a/src/Gtk/Internal.dcl b/src/Gtk/Internal.dcl index 6d2e489..4e4fc96 100644 --- a/src/Gtk/Internal.dcl +++ b/src/Gtk/Internal.dcl @@ -46,8 +46,15 @@ gtk_dialog_set_modal :: !Pointer !Bool !.a -> .a gtk_entry_get_text :: !Pointer !.a -> (!String, !.a) gtk_entry_new :: !.a -> (!Pointer, !.a) +gtk_entry_set_completion :: !Pointer !Pointer !.a -> .a gtk_entry_set_text :: !Pointer !String !.a -> .a +gtk_entry_completion_new :: !.a -> (!Pointer, !.a) +gtk_entry_completion_set_inline_completion :: !Pointer !Bool !.a -> .a +gtk_entry_completion_set_inline_selection :: !Pointer !Bool !.a -> .a +gtk_entry_completion_set_model :: !Pointer !Pointer !.a -> .a +gtk_entry_completion_set_text_column :: !Pointer !Int !.a -> .a + gtk_events_pending :: !.a -> (!Bool, !.a) gtk_file_chooser_add_filter :: !Pointer !Pointer !.a -> .a diff --git a/src/Gtk/Internal.icl b/src/Gtk/Internal.icl index e9b7a27..987ae85 100644 --- a/src/Gtk/Internal.icl +++ b/src/Gtk/Internal.icl @@ -172,6 +172,11 @@ gtk_entry_new env = code { ccall gtk_entry_new ":p:A" } +gtk_entry_set_completion :: !Pointer !Pointer !.a -> .a +gtk_entry_set_completion entry completion env = code { + ccall gtk_entry_set_completion "pp:V:A" +} + gtk_entry_set_text :: !Pointer !String !.a -> .a gtk_entry_set_text entry text env = set entry (packString text) env where @@ -180,6 +185,31 @@ where ccall gtk_entry_set_text "ps:V:A" } +gtk_entry_completion_new :: !.a -> (!Pointer, !.a) +gtk_entry_completion_new env = code { + ccall gtk_entry_completion_new ":p:A" +} + +gtk_entry_completion_set_inline_completion :: !Pointer !Bool !.a -> .a +gtk_entry_completion_set_inline_completion completion setting env = code { + ccall gtk_entry_completion_set_inline_completion "pI:V:A" +} + +gtk_entry_completion_set_inline_selection :: !Pointer !Bool !.a -> .a +gtk_entry_completion_set_inline_selection completion setting env = code { + ccall gtk_entry_completion_set_inline_selection "pI:V:A" +} + +gtk_entry_completion_set_model :: !Pointer !Pointer !.a -> .a +gtk_entry_completion_set_model completion model env = code { + ccall gtk_entry_completion_set_model "pp:V:A" +} + +gtk_entry_completion_set_text_column :: !Pointer !Int !.a -> .a +gtk_entry_completion_set_text_column completion col env = code { + ccall gtk_entry_completion_set_text_column "pI:V:A" +} + gtk_events_pending :: !.a -> (!Bool, !.a) gtk_events_pending _ = code { ccall gtk_events_pending ":I:A" diff --git a/src/Gtk/Types.dcl b/src/Gtk/Types.dcl index 8ffa961..9dac38d 100644 --- a/src/Gtk/Types.dcl +++ b/src/Gtk/Types.dcl @@ -60,6 +60,12 @@ instance toInt GtkAlign instance toInt GtkButtonsType +:: GtkCompletionMode + = InlineCompletion + | NoInlineCompletion + | InlineSelection + | NoInlineSelection + :: GtkCSSClass = Class !String diff --git a/src/Gtk/Widgets.dcl b/src/Gtk/Widgets.dcl index 0b77204..65f8c87 100644 --- a/src/Gtk/Widgets.dcl +++ b/src/Gtk/Widgets.dcl @@ -10,12 +10,12 @@ from Gtk.Tune import class tune from Gtk.Types import :: GType, :: GValue, :: GdkModifier, - :: GtkAlign, :: GtkButtonsType, :: GtkCSSClass, :: GtkDirection, - :: GtkExpand, :: GtkFileChooserAction, :: GtkMargins, :: GtkMessageType, - :: GtkModal, :: GtkOrientation, :: GtkPanedHandleWidth, :: GtkResize, - :: GtkResponse, :: GtkScrollbarPolicy, :: GtkSensitivity, :: GtkShrink, - :: GtkSizeRequest, :: GtkSpacing, :: GtkStylePriority, :: GtkText, - :: GtkTitle, :: GtkWrapMode + :: GtkAlign, :: GtkButtonsType, :: GtkCompletionMode, :: GtkCSSClass, + :: GtkDirection, :: GtkExpand, :: GtkFileChooserAction, :: GtkMargins, + :: GtkMessageType, :: GtkModal, :: GtkOrientation, :: GtkPanedHandleWidth, + :: GtkResize, :: GtkResponse, :: GtkScrollbarPolicy, :: GtkSensitivity, + :: GtkShrink, :: GtkSizeRequest, :: GtkSpacing, :: GtkStylePriority, + :: GtkText, :: GtkTitle, :: GtkWrapMode :: GtkAccelGroup =: GtkAccelGroup Pointer @@ -85,6 +85,15 @@ newEntry :: GtkM GtkEntry getText :: !e -> GtkM String | gtkEntry e instance tune GtkEntry GtkText +instance tune GtkEntry GtkEntryCompletion + +:: GtkEntryCompletion =: GtkEntryCompletion Pointer + +newEntryCompletion :: GtkM GtkEntryCompletion +setTextColumn :: !Int !GtkEntryCompletion -> GtkM GtkEntryCompletion + +instance tune GtkEntryCompletion GtkListStore +instance tune GtkEntryCompletion GtkCompletionMode :: GtkFrame =: GtkFrame Pointer instance gtkWidget GtkFrame diff --git a/src/Gtk/Widgets.icl b/src/Gtk/Widgets.icl index 9573966..2c522d0 100644 --- a/src/Gtk/Widgets.icl +++ b/src/Gtk/Widgets.icl @@ -166,6 +166,39 @@ where toState (gtk_entry_set_text e text) >>| pure entry +instance tune GtkEntry GtkEntryCompletion +where + tune (GtkEntryCompletion ec) entry=:(GtkEntry e) = + toState (gtk_entry_set_completion e ec) >>| + pure entry + +newEntryCompletion :: GtkM GtkEntryCompletion +newEntryCompletion = + toStateR gtk_entry_completion_new >>= \ec -> + toState (gtk_entry_completion_set_inline_selection ec True) >>| // TODO + pure (GtkEntryCompletion ec) + +setTextColumn :: !Int !GtkEntryCompletion -> GtkM GtkEntryCompletion +setTextColumn col completion=:(GtkEntryCompletion ec) = + toState (gtk_entry_completion_set_text_column ec col) >>| + pure completion + +instance tune GtkEntryCompletion GtkListStore +where + tune (GtkListStore ls) completion=:(GtkEntryCompletion ec) = + toState (gtk_entry_completion_set_model ec ls) >>| + pure completion + +instance tune GtkEntryCompletion GtkCompletionMode +where + tune mode completion=:(GtkEntryCompletion ec) = set >>| pure completion + where + set = toState case mode of + InlineCompletion -> gtk_entry_completion_set_inline_completion ec True + NoInlineCompletion -> gtk_entry_completion_set_inline_completion ec False + InlineSelection -> gtk_entry_completion_set_inline_selection ec True + NoInlineSelection -> gtk_entry_completion_set_inline_selection ec False + instance gtkWidget GtkFrame where gtkWidget (GtkFrame f) = GtkWidget f instance gtkContainer GtkFrame where gtkContainer (GtkFrame f) = GtkContainer f |