summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2019-12-12 14:59:47 +0100
committerCamil Staps2019-12-12 14:59:47 +0100
commitfc5d54decf344a3104a6c46641b93ea2f7319a62 (patch)
tree852f1deb80f69b2be6686c350f3ca052867cc19b
parentAdd G flag to ccall of gtk_sheet_moveto, to be sure (diff)
Add GtkSortable for TreeView columns
-rw-r--r--src/Gtk/Internal.dcl1
-rw-r--r--src/Gtk/Internal.icl5
-rw-r--r--src/Gtk/Types.dcl4
-rw-r--r--src/Gtk/Widgets.dcl6
-rw-r--r--src/Gtk/Widgets.icl5
5 files changed, 16 insertions, 5 deletions
diff --git a/src/Gtk/Internal.dcl b/src/Gtk/Internal.dcl
index bd37efa..8c9da9e 100644
--- a/src/Gtk/Internal.dcl
+++ b/src/Gtk/Internal.dcl
@@ -160,6 +160,7 @@ gtk_tree_selection_select_iter :: !Pointer !{#Int} !.a -> .a
gtk_tree_view_column_add_attribute :: !Pointer !Pointer !String !Int !.a -> .a
gtk_tree_view_column_new :: !.a -> (!Pointer, !.a)
gtk_tree_view_column_pack_start :: !Pointer !Pointer !Bool !.a -> .a
+gtk_tree_view_column_set_sort_column_id :: !Pointer !Int !.a -> .a
gtk_tree_view_column_set_title :: !Pointer !String !.a -> .a
gtk_tree_view_append_column :: !Pointer !Pointer !.a -> .a
diff --git a/src/Gtk/Internal.icl b/src/Gtk/Internal.icl
index 89546ba..b92d3d8 100644
--- a/src/Gtk/Internal.icl
+++ b/src/Gtk/Internal.icl
@@ -718,6 +718,11 @@ gtk_tree_view_column_pack_start column renderer expand env = code {
ccall gtk_tree_view_column_pack_start "ppI:V:A"
}
+gtk_tree_view_column_set_sort_column_id :: !Pointer !Int !.a -> .a
+gtk_tree_view_column_set_sort_column_id column id env = code {
+ ccall gtk_tree_view_column_set_sort_column_id "pI:V:A"
+}
+
gtk_tree_view_column_set_title :: !Pointer !String !.a -> .a
gtk_tree_view_column_set_title column title env = set column (packString title) env
where
diff --git a/src/Gtk/Types.dcl b/src/Gtk/Types.dcl
index 62b925c..dfbde91 100644
--- a/src/Gtk/Types.dcl
+++ b/src/Gtk/Types.dcl
@@ -201,6 +201,10 @@ instance toInt GtkScrollbarPolicy
:: GtkSizeRequest =: GtkSizeRequest (!Int,!Int)
+:: GtkSortable
+ = Sortable
+ | NotSortable
+
:: GtkSpacing =: Spacing Int
:: GtkStylePriority
diff --git a/src/Gtk/Widgets.dcl b/src/Gtk/Widgets.dcl
index a9cb44c..27d5677 100644
--- a/src/Gtk/Widgets.dcl
+++ b/src/Gtk/Widgets.dcl
@@ -29,8 +29,8 @@ from Gtk.Types import
:: GtkLineSpacingModifier, :: GtkMargins, :: GtkMarkup, :: GtkMessageType,
:: GtkModal, :: GtkOrientation, :: GtkPanedHandleWidth, :: GtkResize,
:: GtkResponse, :: GtkScrollbarPolicy, :: GtkSensitivity, :: GtkShrink,
- :: GtkSizeRequest, :: GtkSpacing, :: GtkStylePriority, :: GtkText,
- :: GtkTitle, :: GtkWrapMode
+ :: GtkSizeRequest, :: GtkSortable, :: GtkSpacing, :: GtkStylePriority,
+ :: GtkText, :: GtkTitle, :: GtkWrapMode
/**
* A `GtkAccelGroup` is needed for a `GtkAccelerator`. 'Accelerator' is Gtk's
@@ -365,7 +365,7 @@ newTreeView :: !GtkListStore -> GtkM GtkTreeView
* the column index in the list store that is shown. When `Expand` is used,
* excess space of the tree view is (partially) given to this column.
*/
-appendColumnToTreeView :: !String !Int !GtkExpand !GtkTreeView -> GtkM GtkTreeView
+appendColumnToTreeView :: !String !Int !GtkSortable !GtkExpand !GtkTreeView -> GtkM GtkTreeView
//* Add a signal handler for the event that the user selects a different row.
addSelectionChangedHandler :: !(GtkM ()) !GtkTreeView -> GtkM GtkTreeView
diff --git a/src/Gtk/Widgets.icl b/src/Gtk/Widgets.icl
index 4fec8d4..d4f53a4 100644
--- a/src/Gtk/Widgets.icl
+++ b/src/Gtk/Widgets.icl
@@ -540,13 +540,14 @@ newTreeView (GtkListStore s) =
toState (g_object_unref s) >>|
show (GtkTreeView view)
-appendColumnToTreeView :: !String !Int !GtkExpand !GtkTreeView -> GtkM GtkTreeView
-appendColumnToTreeView title col expand tree=:(GtkTreeView tv) =
+appendColumnToTreeView :: !String !Int !GtkSortable !GtkExpand !GtkTreeView -> GtkM GtkTreeView
+appendColumnToTreeView title col sortable expand tree=:(GtkTreeView tv) =
toStateR gtk_cell_renderer_text_new >>= \renderer ->
toStateR gtk_tree_view_column_new >>= \column ->
toState (gtk_tree_view_column_set_title column title) >>|
toState (gtk_tree_view_column_pack_start column renderer expand=:Expand) >>|
toState (gtk_tree_view_column_add_attribute column renderer "text" col) >>|
+ if (sortable=:Sortable) (toState (gtk_tree_view_column_set_sort_column_id column col)) (pure ()) >>|
toState (gtk_tree_view_append_column tv column) >>|
pure tree