summaryrefslogtreecommitdiff
path: root/src/Gtk
diff options
context:
space:
mode:
authorCamil Staps2019-10-30 19:45:59 +0100
committerCamil Staps2019-10-30 19:45:59 +0100
commit6eb82f6660f402f64049c0aa8dab6734b05dbf43 (patch)
treea551643e81d7d93b326e1e4f5aeea779a09d18d8 /src/Gtk
parentExport all derived strictness (diff)
Add GtkEntryCompletion
Diffstat (limited to 'src/Gtk')
-rw-r--r--src/Gtk/Internal.dcl7
-rw-r--r--src/Gtk/Internal.icl30
-rw-r--r--src/Gtk/Types.dcl6
-rw-r--r--src/Gtk/Widgets.dcl21
-rw-r--r--src/Gtk/Widgets.icl33
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